quidproquo-webserver 0.0.36 → 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.
Files changed (52) hide show
  1. package/package.json +1 -4
  2. package/src/actions/genericDataResource/GenericDataResourceActionRequester.ts +9 -0
  3. package/src/actions/genericDataResource/GenericDataResourceActionTypeEnum.ts +6 -0
  4. package/{lib/actions/genericDataResource/index.d.ts → src/actions/genericDataResource/index.ts} +0 -0
  5. package/{lib/actions/index.d.ts → src/actions/index.ts} +0 -0
  6. package/src/actions/openApiSpec/OpenApiSpecActionType.ts +3 -0
  7. package/src/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionRequester.ts +6 -0
  8. package/src/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionTypes.ts +21 -0
  9. package/{lib/actions/openApiSpec/index.d.ts → src/actions/openApiSpec/index.ts} +1 -0
  10. package/src/config/QPQConfig.ts +6 -0
  11. package/{lib/config/index.d.ts → src/config/index.ts} +0 -0
  12. package/src/config/settings/defaultRouteOptions.ts +16 -0
  13. package/src/config/settings/dns.ts +13 -0
  14. package/{lib/config/settings/index.d.ts → src/config/settings/index.ts} +0 -0
  15. package/src/config/settings/openApi.ts +15 -0
  16. package/src/config/settings/route.ts +31 -0
  17. package/{lib/index.d.ts → src/index.ts} +1 -0
  18. package/src/qpqWebServerUtils.ts +107 -0
  19. package/src/types/HTTPEvent.ts +15 -0
  20. package/{lib/types/index.d.ts → src/types/index.ts} +0 -0
  21. package/tsconfig.json +8 -0
  22. package/lib/actions/genericDataResource/GenericDataResourceActionRequester.d.ts +0 -2
  23. package/lib/actions/genericDataResource/GenericDataResourceActionRequester.js +0 -15
  24. package/lib/actions/genericDataResource/GenericDataResourceActionTypeEnum.d.ts +0 -5
  25. package/lib/actions/genericDataResource/GenericDataResourceActionTypeEnum.js +0 -9
  26. package/lib/actions/genericDataResource/index.js +0 -18
  27. package/lib/actions/index.js +0 -18
  28. package/lib/actions/openApiSpec/OpenApiSpecActionType.d.ts +0 -3
  29. package/lib/actions/openApiSpec/OpenApiSpecActionType.js +0 -7
  30. package/lib/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionRequester.d.ts +0 -2
  31. package/lib/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionRequester.js +0 -8
  32. package/lib/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionTypes.d.ts +0 -9
  33. package/lib/actions/openApiSpec/OpenApiSpecGetOpenApiSpecActionTypes.js +0 -2
  34. package/lib/actions/openApiSpec/index.js +0 -19
  35. package/lib/config/QPQConfig.d.ts +0 -6
  36. package/lib/config/QPQConfig.js +0 -10
  37. package/lib/config/index.js +0 -18
  38. package/lib/config/settings/defaultRouteOptions.d.ts +0 -6
  39. package/lib/config/settings/defaultRouteOptions.js +0 -9
  40. package/lib/config/settings/dns.d.ts +0 -5
  41. package/lib/config/settings/dns.js +0 -9
  42. package/lib/config/settings/index.js +0 -20
  43. package/lib/config/settings/openApi.d.ts +0 -5
  44. package/lib/config/settings/openApi.js +0 -11
  45. package/lib/config/settings/route.d.ts +0 -12
  46. package/lib/config/settings/route.js +0 -13
  47. package/lib/index.js +0 -33
  48. package/lib/qpqWebServerUtils.d.ts +0 -13
  49. package/lib/qpqWebServerUtils.js +0 -71
  50. package/lib/types/HTTPEvent.d.ts +0 -15
  51. package/lib/types/HTTPEvent.js +0 -2
  52. 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.36",
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
+ }
@@ -0,0 +1,6 @@
1
+ export enum GenericDataResourceActionTypeEnum {
2
+ Put = "@quidproquo-webserver/genericDataResource/Put",
3
+ Scan = "@quidproquo-webserver/genericDataResource/Scan",
4
+ }
5
+
6
+ export default GenericDataResourceActionTypeEnum;
File without changes
@@ -0,0 +1,3 @@
1
+ export enum OpenApiSpecActionType {
2
+ GetOpenApiSpec = '@quidproquo-core/OpenApiSpec/GetOpenApiSpec',
3
+ }
@@ -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
+ >;
@@ -1,3 +1,4 @@
1
1
  export * from './OpenApiSpecActionType';
2
+
2
3
  export * from './OpenApiSpecGetOpenApiSpecActionRequester';
3
4
  export * from './OpenApiSpecGetOpenApiSpecActionTypes';
@@ -0,0 +1,6 @@
1
+ export 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
+ }
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
+ });
@@ -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
+ });
@@ -1,4 +1,5 @@
1
1
  export * from './actions';
2
2
  export * from './config';
3
3
  export * from './types';
4
+
4
5
  export * as qpqWebServerUtils from './qpqWebServerUtils';
@@ -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
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "quidproquo-tsconfig",
3
+ "compilerOptions": {
4
+ "outDir": "./lib"
5
+ },
6
+ "include": ["src"],
7
+ "exclude": ["node_modules"]
8
+ }
@@ -1,2 +0,0 @@
1
- export declare function askPutGenericDataResource(tableName: string, item: object): Generator<any, object, object>;
2
- export declare function askScanGenericDataResource(tableName: string, maxItems: number): Generator<any, Array<object>, Array<object>>;
@@ -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,5 +0,0 @@
1
- export declare enum GenericDataResourceActionTypeEnum {
2
- Put = "@quidproquo-webserver/genericDataResource/Put",
3
- Scan = "@quidproquo-webserver/genericDataResource/Scan"
4
- }
5
- export default GenericDataResourceActionTypeEnum;
@@ -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);
@@ -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,3 +0,0 @@
1
- export declare enum OpenApiSpecActionType {
2
- GetOpenApiSpec = "@quidproquo-core/OpenApiSpec/GetOpenApiSpec"
3
- }
@@ -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,2 +0,0 @@
1
- import { OpenApiSpecGetOpenApiSpecActionRequester } from './OpenApiSpecGetOpenApiSpecActionTypes';
2
- export declare function askGetOpenApiSpec(): OpenApiSpecGetOpenApiSpecActionRequester;
@@ -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,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -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
- }
@@ -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 = {}));
@@ -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,5 +0,0 @@
1
- import { QPQConfigSetting } from "quidproquo-core";
2
- export interface DnsQPQWebServerConfigSetting extends QPQConfigSetting {
3
- dnsBase: string;
4
- }
5
- export declare const defineDns: (dnsBase: string) => DnsQPQWebServerConfigSetting;
@@ -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,5 +0,0 @@
1
- import { QPQConfigSetting } from 'quidproquo-core';
2
- export interface OpenApiQPQWebServerConfigSetting extends QPQConfigSetting {
3
- openApiSpecPath: string;
4
- }
5
- export declare const defineOpenApi: (openApiSpecPath: string) => OpenApiQPQWebServerConfigSetting;
@@ -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;
@@ -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;
@@ -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
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -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);