quidproquo-webserver 0.0.37 → 0.0.38
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/package.json +1 -4
- package/src/actions/genericDataResource/GenericDataResourceActionRequester.ts +9 -0
- package/src/actions/genericDataResource/GenericDataResourceActionTypeEnum.ts +6 -0
- package/{lib/actions/genericDataResource/index.d.ts → src/actions/genericDataResource/index.ts} +0 -0
- package/{lib/actions/index.d.ts → src/actions/index.ts} +0 -0
- package/src/actions/openApiSpec/OpenApiSpecActionType.ts +3 -0
- package/src/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionRequester.ts +6 -0
- package/src/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionTypes.ts +21 -0
- package/{lib/actions/openApiSpec/index.d.ts → src/actions/openApiSpec/index.ts} +1 -0
- package/src/config/QPQConfig.ts +6 -0
- package/{lib/config/index.d.ts → src/config/index.ts} +0 -0
- package/src/config/settings/defaultRouteOptions.ts +16 -0
- package/src/config/settings/dns.ts +13 -0
- package/{lib/config/settings/index.d.ts → src/config/settings/index.ts} +0 -0
- package/src/config/settings/openApi.ts +15 -0
- package/src/config/settings/route.ts +31 -0
- package/{lib/index.d.ts → src/index.ts} +1 -0
- package/src/qpqWebServerUtils.ts +107 -0
- package/src/types/HTTPEvent.ts +15 -0
- package/{lib/types/index.d.ts → src/types/index.ts} +0 -0
- package/tsconfig.json +8 -0
- package/lib/actions/genericDataResource/GenericDataResourceActionRequester.d.ts +0 -2
- package/lib/actions/genericDataResource/GenericDataResourceActionRequester.js +0 -15
- package/lib/actions/genericDataResource/GenericDataResourceActionTypeEnum.d.ts +0 -5
- package/lib/actions/genericDataResource/GenericDataResourceActionTypeEnum.js +0 -9
- package/lib/actions/genericDataResource/index.js +0 -18
- package/lib/actions/index.js +0 -18
- package/lib/actions/openApiSpec/OpenApiSpecActionType.d.ts +0 -3
- package/lib/actions/openApiSpec/OpenApiSpecActionType.js +0 -7
- package/lib/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionRequester.d.ts +0 -2
- package/lib/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionRequester.js +0 -8
- package/lib/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionTypes.d.ts +0 -9
- package/lib/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionTypes.js +0 -2
- package/lib/actions/openApiSpec/index.js +0 -19
- package/lib/config/QPQConfig.d.ts +0 -6
- package/lib/config/QPQConfig.js +0 -10
- package/lib/config/index.js +0 -18
- package/lib/config/settings/defaultRouteOptions.d.ts +0 -6
- package/lib/config/settings/defaultRouteOptions.js +0 -9
- package/lib/config/settings/dns.d.ts +0 -5
- package/lib/config/settings/dns.js +0 -9
- package/lib/config/settings/index.js +0 -20
- package/lib/config/settings/openApi.d.ts +0 -5
- package/lib/config/settings/openApi.js +0 -11
- package/lib/config/settings/route.d.ts +0 -12
- package/lib/config/settings/route.js +0 -13
- package/lib/index.js +0 -33
- package/lib/qpqWebServerUtils.d.ts +0 -13
- package/lib/qpqWebServerUtils.js +0 -71
- package/lib/types/HTTPEvent.d.ts +0 -15
- package/lib/types/HTTPEvent.js +0 -2
- package/lib/types/index.js +0 -17
package/package.json
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quidproquo-webserver",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.38",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.js",
|
|
7
|
-
"files": [
|
|
8
|
-
"lib/**/*"
|
|
9
|
-
],
|
|
10
7
|
"scripts": {
|
|
11
8
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
12
9
|
"clean": "npx rimraf lib",
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import GenericDataResourceActionTypeEnum from './GenericDataResourceActionTypeEnum';
|
|
2
|
+
|
|
3
|
+
export function* askPutGenericDataResource(tableName: string, item: object): Generator<any, object, object> {
|
|
4
|
+
return yield { type: GenericDataResourceActionTypeEnum.Put, payload: { tableName, item } };
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function* askScanGenericDataResource(tableName: string, maxItems: number): Generator<any, Array<object>, Array<object>> {
|
|
8
|
+
return yield { type: GenericDataResourceActionTypeEnum.Scan, payload: { tableName, maxItems } };
|
|
9
|
+
}
|
package/{lib/actions/genericDataResource/index.d.ts → src/actions/genericDataResource/index.ts}
RENAMED
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OpenApiSpecGetOpenApiSpecActionRequester } from './OpenApiSpecGetOpenApiSpecActionTypes';
|
|
2
|
+
import { OpenApiSpecActionType } from './OpenApiSpecActionType';
|
|
3
|
+
|
|
4
|
+
export function* askGetOpenApiSpec(): OpenApiSpecGetOpenApiSpecActionRequester {
|
|
5
|
+
return yield { type: OpenApiSpecActionType.GetOpenApiSpec };
|
|
6
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Action, ActionProcessor, ActionRequester } from 'quidproquo-core';
|
|
2
|
+
import { OpenApiSpecActionType } from './OpenApiSpecActionType';
|
|
3
|
+
|
|
4
|
+
// Payload
|
|
5
|
+
export interface OpenApiSpecGetOpenApiSpecActionPayload {}
|
|
6
|
+
|
|
7
|
+
// Action
|
|
8
|
+
export interface OpenApiSpecGetOpenApiSpecAction
|
|
9
|
+
extends Action<OpenApiSpecGetOpenApiSpecActionPayload> {
|
|
10
|
+
type: OpenApiSpecActionType.GetOpenApiSpec;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Function Types
|
|
14
|
+
export type OpenApiSpecGetOpenApiSpecActionProcessor = ActionProcessor<
|
|
15
|
+
OpenApiSpecGetOpenApiSpecAction,
|
|
16
|
+
string
|
|
17
|
+
>;
|
|
18
|
+
export type OpenApiSpecGetOpenApiSpecActionRequester = ActionRequester<
|
|
19
|
+
OpenApiSpecGetOpenApiSpecAction,
|
|
20
|
+
string
|
|
21
|
+
>;
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { QPQConfigSetting } from 'quidproquo-core';
|
|
2
|
+
|
|
3
|
+
import { QPQWebServerConfigSettingType } from '../QPQConfig';
|
|
4
|
+
import { RouteOptions } from './route';
|
|
5
|
+
|
|
6
|
+
export interface DefaultRouteOptionsQPQWebServerConfigSetting extends QPQConfigSetting {
|
|
7
|
+
routeOptions: RouteOptions;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const defineDefaultRouteOptions = (
|
|
11
|
+
routeOptions: RouteOptions,
|
|
12
|
+
): DefaultRouteOptionsQPQWebServerConfigSetting => ({
|
|
13
|
+
configSettingType: QPQWebServerConfigSettingType.DefaultRouteOptions,
|
|
14
|
+
|
|
15
|
+
routeOptions,
|
|
16
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { QPQConfigSetting } from "quidproquo-core";
|
|
2
|
+
|
|
3
|
+
import { QPQWebServerConfigSettingType } from "../QPQConfig";
|
|
4
|
+
|
|
5
|
+
export interface DnsQPQWebServerConfigSetting extends QPQConfigSetting {
|
|
6
|
+
dnsBase: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const defineDns = (dnsBase: string): DnsQPQWebServerConfigSetting => ({
|
|
10
|
+
configSettingType: QPQWebServerConfigSettingType.Dns,
|
|
11
|
+
|
|
12
|
+
dnsBase,
|
|
13
|
+
});
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { QPQConfigSetting } from 'quidproquo-core';
|
|
2
|
+
|
|
3
|
+
import { QPQWebServerConfigSettingType } from '../QPQConfig';
|
|
4
|
+
|
|
5
|
+
export interface OpenApiQPQWebServerConfigSetting extends QPQConfigSetting {
|
|
6
|
+
openApiSpecPath: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const defineOpenApi = (openApiSpecPath: string): OpenApiQPQWebServerConfigSetting => {
|
|
10
|
+
return {
|
|
11
|
+
configSettingType: QPQWebServerConfigSettingType.OpenApi,
|
|
12
|
+
|
|
13
|
+
openApiSpecPath,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { QPQConfigSetting, HTTPMethod } from 'quidproquo-core';
|
|
2
|
+
|
|
3
|
+
import { QPQWebServerConfigSettingType } from '../QPQConfig';
|
|
4
|
+
|
|
5
|
+
export type RouteOptions = {
|
|
6
|
+
allowedOrigins?: string[];
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export interface RouteQPQWebServerConfigSetting extends QPQConfigSetting {
|
|
10
|
+
method: HTTPMethod;
|
|
11
|
+
path: string;
|
|
12
|
+
src: string;
|
|
13
|
+
runtime: string;
|
|
14
|
+
options: RouteOptions;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const defineRoute = (
|
|
18
|
+
method: HTTPMethod,
|
|
19
|
+
path: string,
|
|
20
|
+
src: string,
|
|
21
|
+
runtime: string,
|
|
22
|
+
options: RouteOptions = {},
|
|
23
|
+
): RouteQPQWebServerConfigSetting => ({
|
|
24
|
+
configSettingType: QPQWebServerConfigSettingType.Route,
|
|
25
|
+
|
|
26
|
+
method,
|
|
27
|
+
path,
|
|
28
|
+
src,
|
|
29
|
+
runtime,
|
|
30
|
+
options,
|
|
31
|
+
});
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { QPQConfig, qpqCoreUtils } from 'quidproquo-core';
|
|
2
|
+
|
|
3
|
+
import { RouteQPQWebServerConfigSetting } from './config/settings/route';
|
|
4
|
+
import { DnsQPQWebServerConfigSetting } from './config/settings/dns';
|
|
5
|
+
import { OpenApiQPQWebServerConfigSetting } from './config/settings/openApi';
|
|
6
|
+
import { DefaultRouteOptionsQPQWebServerConfigSetting } from './config/settings/defaultRouteOptions';
|
|
7
|
+
import { QPQWebServerConfigSettingType } from './config/QPQConfig';
|
|
8
|
+
import { getAppFeature } from 'quidproquo-core/lib/qpqCoreUtils';
|
|
9
|
+
|
|
10
|
+
import { HttpEventHeaders } from './types/HTTPEvent';
|
|
11
|
+
import { RouteOptions } from './config/settings/route';
|
|
12
|
+
|
|
13
|
+
export const getAllRoutes = (configs: QPQConfig): RouteQPQWebServerConfigSetting[] => {
|
|
14
|
+
const routes = qpqCoreUtils.getConfigSettings<RouteQPQWebServerConfigSetting>(
|
|
15
|
+
configs,
|
|
16
|
+
QPQWebServerConfigSettingType.Route,
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
return routes;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const getAllOpenApiSpecs = (configs: QPQConfig): OpenApiQPQWebServerConfigSetting[] => {
|
|
23
|
+
const openApiSpecs = qpqCoreUtils.getConfigSettings<OpenApiQPQWebServerConfigSetting>(
|
|
24
|
+
configs,
|
|
25
|
+
QPQWebServerConfigSettingType.OpenApi,
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
return openApiSpecs;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// Used in bundlers to know where and what to build and index
|
|
32
|
+
// Events, routes, etc
|
|
33
|
+
export const getAllSrcEntries = (configs: QPQConfig): string[] => {
|
|
34
|
+
return [
|
|
35
|
+
...getAllRoutes(configs).map((r) => r.src),
|
|
36
|
+
...getAllOpenApiSpecs(configs).map((r) => r.openApiSpecPath),
|
|
37
|
+
];
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const getDomainName = (configs: QPQConfig): string => {
|
|
41
|
+
const dnsSettings = qpqCoreUtils.getConfigSetting<DnsQPQWebServerConfigSetting>(
|
|
42
|
+
configs,
|
|
43
|
+
QPQWebServerConfigSettingType.Dns,
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
return dnsSettings?.dnsBase || '';
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export const getFeatureDomainName = (configs: QPQConfig): string => {
|
|
50
|
+
const feature = getAppFeature(configs);
|
|
51
|
+
const apexDomainName = getDomainName(configs);
|
|
52
|
+
|
|
53
|
+
if (feature === 'production') {
|
|
54
|
+
return apexDomainName;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return `${feature}.${apexDomainName}`;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export const getHeaderValue = (header: string, headers: HttpEventHeaders): string | null => {
|
|
61
|
+
const headerAsLower = header.toLowerCase();
|
|
62
|
+
const realHeaderKey = Object.keys(headers).find((k) => k.toLowerCase() === headerAsLower);
|
|
63
|
+
|
|
64
|
+
if (!realHeaderKey) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return headers[realHeaderKey] || null;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export const getAllowedOrigins = (configs: QPQConfig, route: RouteOptions): string[] => {
|
|
72
|
+
// Root domain
|
|
73
|
+
const rootDomain = `https://${getFeatureDomainName(configs)}`;
|
|
74
|
+
|
|
75
|
+
// generic settings
|
|
76
|
+
const defaultRouteSettings =
|
|
77
|
+
qpqCoreUtils.getConfigSettings<DefaultRouteOptionsQPQWebServerConfigSetting>(
|
|
78
|
+
configs,
|
|
79
|
+
QPQWebServerConfigSettingType.DefaultRouteOptions,
|
|
80
|
+
) || [];
|
|
81
|
+
const defaultAllowedOrigins = defaultRouteSettings.reduce(
|
|
82
|
+
(acc, cur) => [...acc, ...(cur.routeOptions.allowedOrigins || [])],
|
|
83
|
+
[] as string[],
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
// Route specific
|
|
87
|
+
const routeAllowedOrigins = route.allowedOrigins || [];
|
|
88
|
+
|
|
89
|
+
return [rootDomain, ...defaultAllowedOrigins, ...routeAllowedOrigins].map((o) => o.toLowerCase());
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const getCorsHeaders = (
|
|
93
|
+
configs: QPQConfig,
|
|
94
|
+
route: RouteOptions,
|
|
95
|
+
reqHeaders: HttpEventHeaders,
|
|
96
|
+
): HttpEventHeaders => {
|
|
97
|
+
const origin = getHeaderValue('origin', reqHeaders) || '';
|
|
98
|
+
const allowedOrigins = getAllowedOrigins(configs, route);
|
|
99
|
+
const allowOrigin = allowedOrigins.find((ao) => ao === origin) || allowedOrigins[0];
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
'Access-Control-Allow-Headers': '*',
|
|
103
|
+
'Access-Control-Allow-Methods': '*',
|
|
104
|
+
'Access-Control-Allow-Origin': allowOrigin,
|
|
105
|
+
Vary: 'Origin',
|
|
106
|
+
};
|
|
107
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { HTTPMethod } from 'quidproquo-core';
|
|
2
|
+
|
|
3
|
+
export interface HttpEventHeaders {
|
|
4
|
+
[key: string]: undefined | string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface HTTPEventParams<T> {
|
|
8
|
+
path: string;
|
|
9
|
+
query: { [key: string]: undefined | string | string[] };
|
|
10
|
+
body: T;
|
|
11
|
+
headers: HttpEventHeaders;
|
|
12
|
+
method: HTTPMethod;
|
|
13
|
+
correlation: string;
|
|
14
|
+
sourceIp: string;
|
|
15
|
+
}
|
|
File without changes
|
package/tsconfig.json
ADDED
|
@@ -1,15 +0,0 @@
|
|
|
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.askScanGenericDataResource = exports.askPutGenericDataResource = void 0;
|
|
7
|
-
const GenericDataResourceActionTypeEnum_1 = __importDefault(require("./GenericDataResourceActionTypeEnum"));
|
|
8
|
-
function* askPutGenericDataResource(tableName, item) {
|
|
9
|
-
return yield { type: GenericDataResourceActionTypeEnum_1.default.Put, payload: { tableName, item } };
|
|
10
|
-
}
|
|
11
|
-
exports.askPutGenericDataResource = askPutGenericDataResource;
|
|
12
|
-
function* askScanGenericDataResource(tableName, maxItems) {
|
|
13
|
-
return yield { type: GenericDataResourceActionTypeEnum_1.default.Scan, payload: { tableName, maxItems } };
|
|
14
|
-
}
|
|
15
|
-
exports.askScanGenericDataResource = askScanGenericDataResource;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GenericDataResourceActionTypeEnum = void 0;
|
|
4
|
-
var GenericDataResourceActionTypeEnum;
|
|
5
|
-
(function (GenericDataResourceActionTypeEnum) {
|
|
6
|
-
GenericDataResourceActionTypeEnum["Put"] = "@quidproquo-webserver/genericDataResource/Put";
|
|
7
|
-
GenericDataResourceActionTypeEnum["Scan"] = "@quidproquo-webserver/genericDataResource/Scan";
|
|
8
|
-
})(GenericDataResourceActionTypeEnum = exports.GenericDataResourceActionTypeEnum || (exports.GenericDataResourceActionTypeEnum = {}));
|
|
9
|
-
exports.default = GenericDataResourceActionTypeEnum;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./GenericDataResourceActionRequester"), exports);
|
|
18
|
-
__exportStar(require("./GenericDataResourceActionTypeEnum"), exports);
|
package/lib/actions/index.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./genericDataResource"), exports);
|
|
18
|
-
__exportStar(require("./openApiSpec"), exports);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OpenApiSpecActionType = void 0;
|
|
4
|
-
var OpenApiSpecActionType;
|
|
5
|
-
(function (OpenApiSpecActionType) {
|
|
6
|
-
OpenApiSpecActionType["GetOpenApiSpec"] = "@quidproquo-core/OpenApiSpec/GetOpenApiSpec";
|
|
7
|
-
})(OpenApiSpecActionType = exports.OpenApiSpecActionType || (exports.OpenApiSpecActionType = {}));
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.askGetOpenApiSpec = void 0;
|
|
4
|
-
const OpenApiSpecActionType_1 = require("./OpenApiSpecActionType");
|
|
5
|
-
function* askGetOpenApiSpec() {
|
|
6
|
-
return yield { type: OpenApiSpecActionType_1.OpenApiSpecActionType.GetOpenApiSpec };
|
|
7
|
-
}
|
|
8
|
-
exports.askGetOpenApiSpec = askGetOpenApiSpec;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Action, ActionProcessor, ActionRequester } from 'quidproquo-core';
|
|
2
|
-
import { OpenApiSpecActionType } from './OpenApiSpecActionType';
|
|
3
|
-
export interface OpenApiSpecGetOpenApiSpecActionPayload {
|
|
4
|
-
}
|
|
5
|
-
export interface OpenApiSpecGetOpenApiSpecAction extends Action<OpenApiSpecGetOpenApiSpecActionPayload> {
|
|
6
|
-
type: OpenApiSpecActionType.GetOpenApiSpec;
|
|
7
|
-
}
|
|
8
|
-
export type OpenApiSpecGetOpenApiSpecActionProcessor = ActionProcessor<OpenApiSpecGetOpenApiSpecAction, string>;
|
|
9
|
-
export type OpenApiSpecGetOpenApiSpecActionRequester = ActionRequester<OpenApiSpecGetOpenApiSpecAction, string>;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./OpenApiSpecActionType"), exports);
|
|
18
|
-
__exportStar(require("./OpenApiSpecGetOpenApiSpecActionRequester"), exports);
|
|
19
|
-
__exportStar(require("./OpenApiSpecGetOpenApiSpecActionTypes"), exports);
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export declare enum QPQWebServerConfigSettingType {
|
|
2
|
-
Route = "@quidproquo-webserver/config/Route",
|
|
3
|
-
Dns = "@quidproquo-webserver/config/Dns",
|
|
4
|
-
OpenApi = "@quidproquo-webserver/config/OpenApi",
|
|
5
|
-
DefaultRouteOptions = "@quidproquo-webserver/config/DefaultRouteOptions"
|
|
6
|
-
}
|
package/lib/config/QPQConfig.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QPQWebServerConfigSettingType = void 0;
|
|
4
|
-
var QPQWebServerConfigSettingType;
|
|
5
|
-
(function (QPQWebServerConfigSettingType) {
|
|
6
|
-
QPQWebServerConfigSettingType["Route"] = "@quidproquo-webserver/config/Route";
|
|
7
|
-
QPQWebServerConfigSettingType["Dns"] = "@quidproquo-webserver/config/Dns";
|
|
8
|
-
QPQWebServerConfigSettingType["OpenApi"] = "@quidproquo-webserver/config/OpenApi";
|
|
9
|
-
QPQWebServerConfigSettingType["DefaultRouteOptions"] = "@quidproquo-webserver/config/DefaultRouteOptions";
|
|
10
|
-
})(QPQWebServerConfigSettingType = exports.QPQWebServerConfigSettingType || (exports.QPQWebServerConfigSettingType = {}));
|
package/lib/config/index.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./QPQConfig"), exports);
|
|
18
|
-
__exportStar(require("./settings"), exports);
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { QPQConfigSetting } from 'quidproquo-core';
|
|
2
|
-
import { RouteOptions } from './route';
|
|
3
|
-
export interface DefaultRouteOptionsQPQWebServerConfigSetting extends QPQConfigSetting {
|
|
4
|
-
routeOptions: RouteOptions;
|
|
5
|
-
}
|
|
6
|
-
export declare const defineDefaultRouteOptions: (routeOptions: RouteOptions) => DefaultRouteOptionsQPQWebServerConfigSetting;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defineDefaultRouteOptions = void 0;
|
|
4
|
-
const QPQConfig_1 = require("../QPQConfig");
|
|
5
|
-
const defineDefaultRouteOptions = (routeOptions) => ({
|
|
6
|
-
configSettingType: QPQConfig_1.QPQWebServerConfigSettingType.DefaultRouteOptions,
|
|
7
|
-
routeOptions,
|
|
8
|
-
});
|
|
9
|
-
exports.defineDefaultRouteOptions = defineDefaultRouteOptions;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defineDns = void 0;
|
|
4
|
-
const QPQConfig_1 = require("../QPQConfig");
|
|
5
|
-
const defineDns = (dnsBase) => ({
|
|
6
|
-
configSettingType: QPQConfig_1.QPQWebServerConfigSettingType.Dns,
|
|
7
|
-
dnsBase,
|
|
8
|
-
});
|
|
9
|
-
exports.defineDns = defineDns;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./defaultRouteOptions"), exports);
|
|
18
|
-
__exportStar(require("./dns"), exports);
|
|
19
|
-
__exportStar(require("./openApi"), exports);
|
|
20
|
-
__exportStar(require("./route"), exports);
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defineOpenApi = void 0;
|
|
4
|
-
const QPQConfig_1 = require("../QPQConfig");
|
|
5
|
-
const defineOpenApi = (openApiSpecPath) => {
|
|
6
|
-
return {
|
|
7
|
-
configSettingType: QPQConfig_1.QPQWebServerConfigSettingType.OpenApi,
|
|
8
|
-
openApiSpecPath,
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
exports.defineOpenApi = defineOpenApi;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { QPQConfigSetting, HTTPMethod } from 'quidproquo-core';
|
|
2
|
-
export type RouteOptions = {
|
|
3
|
-
allowedOrigins?: string[];
|
|
4
|
-
};
|
|
5
|
-
export interface RouteQPQWebServerConfigSetting extends QPQConfigSetting {
|
|
6
|
-
method: HTTPMethod;
|
|
7
|
-
path: string;
|
|
8
|
-
src: string;
|
|
9
|
-
runtime: string;
|
|
10
|
-
options: RouteOptions;
|
|
11
|
-
}
|
|
12
|
-
export declare const defineRoute: (method: HTTPMethod, path: string, src: string, runtime: string, options?: RouteOptions) => RouteQPQWebServerConfigSetting;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defineRoute = void 0;
|
|
4
|
-
const QPQConfig_1 = require("../QPQConfig");
|
|
5
|
-
const defineRoute = (method, path, src, runtime, options = {}) => ({
|
|
6
|
-
configSettingType: QPQConfig_1.QPQWebServerConfigSettingType.Route,
|
|
7
|
-
method,
|
|
8
|
-
path,
|
|
9
|
-
src,
|
|
10
|
-
runtime,
|
|
11
|
-
options,
|
|
12
|
-
});
|
|
13
|
-
exports.defineRoute = defineRoute;
|
package/lib/index.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
-
};
|
|
21
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
-
if (mod && mod.__esModule) return mod;
|
|
23
|
-
var result = {};
|
|
24
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
-
__setModuleDefault(result, mod);
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.qpqWebServerUtils = void 0;
|
|
30
|
-
__exportStar(require("./actions"), exports);
|
|
31
|
-
__exportStar(require("./config"), exports);
|
|
32
|
-
__exportStar(require("./types"), exports);
|
|
33
|
-
exports.qpqWebServerUtils = __importStar(require("./qpqWebServerUtils"));
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { QPQConfig } from 'quidproquo-core';
|
|
2
|
-
import { RouteQPQWebServerConfigSetting } from './config/settings/route';
|
|
3
|
-
import { OpenApiQPQWebServerConfigSetting } from './config/settings/openApi';
|
|
4
|
-
import { HttpEventHeaders } from './types/HTTPEvent';
|
|
5
|
-
import { RouteOptions } from './config/settings/route';
|
|
6
|
-
export declare const getAllRoutes: (configs: QPQConfig) => RouteQPQWebServerConfigSetting[];
|
|
7
|
-
export declare const getAllOpenApiSpecs: (configs: QPQConfig) => OpenApiQPQWebServerConfigSetting[];
|
|
8
|
-
export declare const getAllSrcEntries: (configs: QPQConfig) => string[];
|
|
9
|
-
export declare const getDomainName: (configs: QPQConfig) => string;
|
|
10
|
-
export declare const getFeatureDomainName: (configs: QPQConfig) => string;
|
|
11
|
-
export declare const getHeaderValue: (header: string, headers: HttpEventHeaders) => string | null;
|
|
12
|
-
export declare const getAllowedOrigins: (configs: QPQConfig, route: RouteOptions) => string[];
|
|
13
|
-
export declare const getCorsHeaders: (configs: QPQConfig, route: RouteOptions, reqHeaders: HttpEventHeaders) => HttpEventHeaders;
|
package/lib/qpqWebServerUtils.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getCorsHeaders = exports.getAllowedOrigins = exports.getHeaderValue = exports.getFeatureDomainName = exports.getDomainName = exports.getAllSrcEntries = exports.getAllOpenApiSpecs = exports.getAllRoutes = void 0;
|
|
4
|
-
const quidproquo_core_1 = require("quidproquo-core");
|
|
5
|
-
const QPQConfig_1 = require("./config/QPQConfig");
|
|
6
|
-
const qpqCoreUtils_1 = require("quidproquo-core/lib/qpqCoreUtils");
|
|
7
|
-
const getAllRoutes = (configs) => {
|
|
8
|
-
const routes = quidproquo_core_1.qpqCoreUtils.getConfigSettings(configs, QPQConfig_1.QPQWebServerConfigSettingType.Route);
|
|
9
|
-
return routes;
|
|
10
|
-
};
|
|
11
|
-
exports.getAllRoutes = getAllRoutes;
|
|
12
|
-
const getAllOpenApiSpecs = (configs) => {
|
|
13
|
-
const openApiSpecs = quidproquo_core_1.qpqCoreUtils.getConfigSettings(configs, QPQConfig_1.QPQWebServerConfigSettingType.OpenApi);
|
|
14
|
-
return openApiSpecs;
|
|
15
|
-
};
|
|
16
|
-
exports.getAllOpenApiSpecs = getAllOpenApiSpecs;
|
|
17
|
-
// Used in bundlers to know where and what to build and index
|
|
18
|
-
// Events, routes, etc
|
|
19
|
-
const getAllSrcEntries = (configs) => {
|
|
20
|
-
return [
|
|
21
|
-
...(0, exports.getAllRoutes)(configs).map((r) => r.src),
|
|
22
|
-
...(0, exports.getAllOpenApiSpecs)(configs).map((r) => r.openApiSpecPath),
|
|
23
|
-
];
|
|
24
|
-
};
|
|
25
|
-
exports.getAllSrcEntries = getAllSrcEntries;
|
|
26
|
-
const getDomainName = (configs) => {
|
|
27
|
-
const dnsSettings = quidproquo_core_1.qpqCoreUtils.getConfigSetting(configs, QPQConfig_1.QPQWebServerConfigSettingType.Dns);
|
|
28
|
-
return (dnsSettings === null || dnsSettings === void 0 ? void 0 : dnsSettings.dnsBase) || '';
|
|
29
|
-
};
|
|
30
|
-
exports.getDomainName = getDomainName;
|
|
31
|
-
const getFeatureDomainName = (configs) => {
|
|
32
|
-
const feature = (0, qpqCoreUtils_1.getAppFeature)(configs);
|
|
33
|
-
const apexDomainName = (0, exports.getDomainName)(configs);
|
|
34
|
-
if (feature === 'production') {
|
|
35
|
-
return apexDomainName;
|
|
36
|
-
}
|
|
37
|
-
return `${feature}.${apexDomainName}`;
|
|
38
|
-
};
|
|
39
|
-
exports.getFeatureDomainName = getFeatureDomainName;
|
|
40
|
-
const getHeaderValue = (header, headers) => {
|
|
41
|
-
const headerAsLower = header.toLowerCase();
|
|
42
|
-
const realHeaderKey = Object.keys(headers).find((k) => k.toLowerCase() === headerAsLower);
|
|
43
|
-
if (!realHeaderKey) {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
return headers[realHeaderKey] || null;
|
|
47
|
-
};
|
|
48
|
-
exports.getHeaderValue = getHeaderValue;
|
|
49
|
-
const getAllowedOrigins = (configs, route) => {
|
|
50
|
-
// Root domain
|
|
51
|
-
const rootDomain = `https://${(0, exports.getFeatureDomainName)(configs)}`;
|
|
52
|
-
// generic settings
|
|
53
|
-
const defaultRouteSettings = quidproquo_core_1.qpqCoreUtils.getConfigSettings(configs, QPQConfig_1.QPQWebServerConfigSettingType.DefaultRouteOptions) || [];
|
|
54
|
-
const defaultAllowedOrigins = defaultRouteSettings.reduce((acc, cur) => [...acc, ...(cur.routeOptions.allowedOrigins || [])], []);
|
|
55
|
-
// Route specific
|
|
56
|
-
const routeAllowedOrigins = route.allowedOrigins || [];
|
|
57
|
-
return [rootDomain, ...defaultAllowedOrigins, ...routeAllowedOrigins].map((o) => o.toLowerCase());
|
|
58
|
-
};
|
|
59
|
-
exports.getAllowedOrigins = getAllowedOrigins;
|
|
60
|
-
const getCorsHeaders = (configs, route, reqHeaders) => {
|
|
61
|
-
const origin = (0, exports.getHeaderValue)('origin', reqHeaders) || '';
|
|
62
|
-
const allowedOrigins = (0, exports.getAllowedOrigins)(configs, route);
|
|
63
|
-
const allowOrigin = allowedOrigins.find((ao) => ao === origin) || allowedOrigins[0];
|
|
64
|
-
return {
|
|
65
|
-
'Access-Control-Allow-Headers': '*',
|
|
66
|
-
'Access-Control-Allow-Methods': '*',
|
|
67
|
-
'Access-Control-Allow-Origin': allowOrigin,
|
|
68
|
-
Vary: 'Origin',
|
|
69
|
-
};
|
|
70
|
-
};
|
|
71
|
-
exports.getCorsHeaders = getCorsHeaders;
|
package/lib/types/HTTPEvent.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { HTTPMethod } from 'quidproquo-core';
|
|
2
|
-
export interface HttpEventHeaders {
|
|
3
|
-
[key: string]: undefined | string;
|
|
4
|
-
}
|
|
5
|
-
export interface HTTPEventParams<T> {
|
|
6
|
-
path: string;
|
|
7
|
-
query: {
|
|
8
|
-
[key: string]: undefined | string | string[];
|
|
9
|
-
};
|
|
10
|
-
body: T;
|
|
11
|
-
headers: HttpEventHeaders;
|
|
12
|
-
method: HTTPMethod;
|
|
13
|
-
correlation: string;
|
|
14
|
-
sourceIp: string;
|
|
15
|
-
}
|
package/lib/types/HTTPEvent.js
DELETED
package/lib/types/index.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./HTTPEvent"), exports);
|