@pristine-ts/gcp-functions 2.0.16
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/LICENSE +201 -0
- package/dist/lib/cjs/enums/enums.js +19 -0
- package/dist/lib/cjs/enums/enums.js.map +1 -0
- package/dist/lib/cjs/enums/gcp-functions-event-type.enum.js +17 -0
- package/dist/lib/cjs/enums/gcp-functions-event-type.enum.js.map +1 -0
- package/dist/lib/cjs/enums/gcp-functions-events-handling-strategy.enum.js +15 -0
- package/dist/lib/cjs/enums/gcp-functions-events-handling-strategy.enum.js.map +1 -0
- package/dist/lib/cjs/event-payloads/cloud-function-gen-1-http.event-payload.js +19 -0
- package/dist/lib/cjs/event-payloads/cloud-function-gen-1-http.event-payload.js.map +1 -0
- package/dist/lib/cjs/event-payloads/cloud-function-gen-2-http.event-payload.js +21 -0
- package/dist/lib/cjs/event-payloads/cloud-function-gen-2-http.event-payload.js.map +1 -0
- package/dist/lib/cjs/event-payloads/cloud-run-http.event-payload.js +19 -0
- package/dist/lib/cjs/event-payloads/cloud-run-http.event-payload.js.map +1 -0
- package/dist/lib/cjs/event-payloads/event-payloads.js +20 -0
- package/dist/lib/cjs/event-payloads/event-payloads.js.map +1 -0
- package/dist/lib/cjs/event-response-payloads/event-response-payloads.js +18 -0
- package/dist/lib/cjs/event-response-payloads/event-response-payloads.js.map +1 -0
- package/dist/lib/cjs/event-response-payloads/gcp-functions-http.event-response-payload.js +23 -0
- package/dist/lib/cjs/event-response-payloads/gcp-functions-http.event-response-payload.js.map +1 -0
- package/dist/lib/cjs/gcp-functions.configuration-keys.js +14 -0
- package/dist/lib/cjs/gcp-functions.configuration-keys.js.map +1 -0
- package/dist/lib/cjs/gcp-functions.module.js +62 -0
- package/dist/lib/cjs/gcp-functions.module.js.map +1 -0
- package/dist/lib/cjs/gcp-functions.module.keyname.js +5 -0
- package/dist/lib/cjs/gcp-functions.module.keyname.js.map +1 -0
- package/dist/lib/cjs/mappers/base-gcp-http-event.mapper.js +106 -0
- package/dist/lib/cjs/mappers/base-gcp-http-event.mapper.js.map +1 -0
- package/dist/lib/cjs/mappers/cloud-function-gen-1-http-event.mapper.js +100 -0
- package/dist/lib/cjs/mappers/cloud-function-gen-1-http-event.mapper.js.map +1 -0
- package/dist/lib/cjs/mappers/cloud-function-gen-2-http-event.mapper.js +121 -0
- package/dist/lib/cjs/mappers/cloud-function-gen-2-http-event.mapper.js.map +1 -0
- package/dist/lib/cjs/mappers/cloud-run-http-event.mapper.js +85 -0
- package/dist/lib/cjs/mappers/cloud-run-http-event.mapper.js.map +1 -0
- package/dist/lib/cjs/mappers/mappers.js +21 -0
- package/dist/lib/cjs/mappers/mappers.js.map +1 -0
- package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/lib/esm/enums/enums.js +3 -0
- package/dist/lib/esm/enums/enums.js.map +1 -0
- package/dist/lib/esm/enums/gcp-functions-event-type.enum.js +14 -0
- package/dist/lib/esm/enums/gcp-functions-event-type.enum.js.map +1 -0
- package/dist/lib/esm/enums/gcp-functions-events-handling-strategy.enum.js +12 -0
- package/dist/lib/esm/enums/gcp-functions-events-handling-strategy.enum.js.map +1 -0
- package/dist/lib/esm/event-payloads/cloud-function-gen-1-http.event-payload.js +15 -0
- package/dist/lib/esm/event-payloads/cloud-function-gen-1-http.event-payload.js.map +1 -0
- package/dist/lib/esm/event-payloads/cloud-function-gen-2-http.event-payload.js +17 -0
- package/dist/lib/esm/event-payloads/cloud-function-gen-2-http.event-payload.js.map +1 -0
- package/dist/lib/esm/event-payloads/cloud-run-http.event-payload.js +15 -0
- package/dist/lib/esm/event-payloads/cloud-run-http.event-payload.js.map +1 -0
- package/dist/lib/esm/event-payloads/event-payloads.js +4 -0
- package/dist/lib/esm/event-payloads/event-payloads.js.map +1 -0
- package/dist/lib/esm/event-response-payloads/event-response-payloads.js +2 -0
- package/dist/lib/esm/event-response-payloads/event-response-payloads.js.map +1 -0
- package/dist/lib/esm/event-response-payloads/gcp-functions-http.event-response-payload.js +19 -0
- package/dist/lib/esm/event-response-payloads/gcp-functions-http.event-response-payload.js.map +1 -0
- package/dist/lib/esm/gcp-functions.configuration-keys.js +11 -0
- package/dist/lib/esm/gcp-functions.configuration-keys.js.map +1 -0
- package/dist/lib/esm/gcp-functions.module.js +45 -0
- package/dist/lib/esm/gcp-functions.module.js.map +1 -0
- package/dist/lib/esm/gcp-functions.module.keyname.js +2 -0
- package/dist/lib/esm/gcp-functions.module.keyname.js.map +1 -0
- package/dist/lib/esm/mappers/base-gcp-http-event.mapper.js +102 -0
- package/dist/lib/esm/mappers/base-gcp-http-event.mapper.js.map +1 -0
- package/dist/lib/esm/mappers/cloud-function-gen-1-http-event.mapper.js +97 -0
- package/dist/lib/esm/mappers/cloud-function-gen-1-http-event.mapper.js.map +1 -0
- package/dist/lib/esm/mappers/cloud-function-gen-2-http-event.mapper.js +118 -0
- package/dist/lib/esm/mappers/cloud-function-gen-2-http-event.mapper.js.map +1 -0
- package/dist/lib/esm/mappers/cloud-run-http-event.mapper.js +82 -0
- package/dist/lib/esm/mappers/cloud-run-http-event.mapper.js.map +1 -0
- package/dist/lib/esm/mappers/mappers.js +5 -0
- package/dist/lib/esm/mappers/mappers.js.map +1 -0
- package/dist/lib/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/types/enums/enums.d.ts +2 -0
- package/dist/types/enums/gcp-functions-event-type.enum.d.ts +12 -0
- package/dist/types/enums/gcp-functions-events-handling-strategy.enum.d.ts +10 -0
- package/dist/types/event-payloads/cloud-function-gen-1-http.event-payload.d.ts +20 -0
- package/dist/types/event-payloads/cloud-function-gen-2-http.event-payload.d.ts +32 -0
- package/dist/types/event-payloads/cloud-run-http.event-payload.d.ts +20 -0
- package/dist/types/event-payloads/event-payloads.d.ts +3 -0
- package/dist/types/event-response-payloads/event-response-payloads.d.ts +1 -0
- package/dist/types/event-response-payloads/gcp-functions-http.event-response-payload.d.ts +20 -0
- package/dist/types/gcp-functions.configuration-keys.d.ts +31 -0
- package/dist/types/gcp-functions.module.d.ts +8 -0
- package/dist/types/gcp-functions.module.keyname.d.ts +1 -0
- package/dist/types/mappers/base-gcp-http-event.mapper.d.ts +37 -0
- package/dist/types/mappers/cloud-function-gen-1-http-event.mapper.d.ts +26 -0
- package/dist/types/mappers/cloud-function-gen-2-http-event.mapper.d.ts +27 -0
- package/dist/types/mappers/cloud-run-http-event.mapper.d.ts +23 -0
- package/dist/types/mappers/mappers.d.ts +4 -0
- package/package.json +67 -0
- package/readme.md +6 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { HttpMethod, Request } from "@pristine-ts/common";
|
|
2
|
+
import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
3
|
+
import { EventResponse } from "@pristine-ts/core";
|
|
4
|
+
import { GcpFunctionsHttpEventResponsePayload } from "../event-response-payloads/gcp-functions-http.event-response-payload";
|
|
5
|
+
/**
|
|
6
|
+
* Shared base for the three GCP-Functions HTTP mappers. Mirrors
|
|
7
|
+
* `BaseApiEventMapper` in `@pristine-ts/aws-api-gateway`.
|
|
8
|
+
*/
|
|
9
|
+
export declare class BaseGcpHttpEventMapper {
|
|
10
|
+
protected mapHttpMethod(method: string): HttpMethod;
|
|
11
|
+
/**
|
|
12
|
+
* Extracts the URL path from a raw URL (which may include query string).
|
|
13
|
+
*/
|
|
14
|
+
protected extractPath(url: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Converts a Pristine `Response` (or arbitrary handler return value) into the
|
|
17
|
+
* `GcpFunctionsHttpEventResponsePayload` shape that the entry-point shim returns to
|
|
18
|
+
* Cloud Functions / Cloud Run.
|
|
19
|
+
*/
|
|
20
|
+
protected toResponsePayload(eventResponse: EventResponse<any, any>, logHandler: LogHandlerInterface): GcpFunctionsHttpEventResponsePayload;
|
|
21
|
+
/**
|
|
22
|
+
* Hydrates a Pristine `Request` from raw HTTP fields. Shared by the Gen 1 and
|
|
23
|
+
* Cloud Run mappers (both deliver raw HTTP).
|
|
24
|
+
*/
|
|
25
|
+
protected toPristineRequest(method: string, url: string, headers: {
|
|
26
|
+
[k: string]: string | string[];
|
|
27
|
+
} | undefined, body: any, eventId: string): Request;
|
|
28
|
+
/**
|
|
29
|
+
* Lowercases keys and collapses single-element arrays so downstream code can read
|
|
30
|
+
* headers consistently as `string`.
|
|
31
|
+
*/
|
|
32
|
+
protected flattenHeaders(headers: {
|
|
33
|
+
[k: string]: string | string[];
|
|
34
|
+
}): {
|
|
35
|
+
[k: string]: string;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Request, Response } from "@pristine-ts/common";
|
|
2
|
+
import { EventIdManager, EventMapperInterface, EventResponse, EventsExecutionOptionsInterface, ExecutionContextInterface } from "@pristine-ts/core";
|
|
3
|
+
import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
4
|
+
import { GcpFunctionsEventsHandlingStrategyEnum } from "../enums/gcp-functions-events-handling-strategy.enum";
|
|
5
|
+
import { CloudFunctionGen1HttpEventPayload } from "../event-payloads/cloud-function-gen-1-http.event-payload";
|
|
6
|
+
import { GcpFunctionsHttpEventResponsePayload } from "../event-response-payloads/gcp-functions-http.event-response-payload";
|
|
7
|
+
import { BaseGcpHttpEventMapper } from "./base-gcp-http-event.mapper";
|
|
8
|
+
/**
|
|
9
|
+
* Maps a Gen 1 HTTP-triggered Cloud Function request into Pristine. Gen 1 HTTP
|
|
10
|
+
* functions receive an Express-style `(req, res)` pair; the entry-point shim
|
|
11
|
+
* normalizes that into a plain object before calling `kernel.handle(...)` with the
|
|
12
|
+
* `GcpCloudFunction` execution context.
|
|
13
|
+
*
|
|
14
|
+
* Dual-mode strategy: `Request` exposes a Pristine `Request` for controller routing;
|
|
15
|
+
* `Event` exposes the raw event payload for handler-based processing.
|
|
16
|
+
*/
|
|
17
|
+
export declare class CloudFunctionGen1HttpEventMapper extends BaseGcpHttpEventMapper implements EventMapperInterface<CloudFunctionGen1HttpEventPayload | Request, GcpFunctionsHttpEventResponsePayload | Response> {
|
|
18
|
+
private readonly logHandler;
|
|
19
|
+
private readonly handlingStrategy;
|
|
20
|
+
private readonly eventIdManager;
|
|
21
|
+
constructor(logHandler: LogHandlerInterface, handlingStrategy: GcpFunctionsEventsHandlingStrategyEnum, eventIdManager: EventIdManager);
|
|
22
|
+
supportsMapping(rawEvent: any, executionContext: ExecutionContextInterface<any>): boolean;
|
|
23
|
+
map(rawEvent: any, executionContext: ExecutionContextInterface<any>): EventsExecutionOptionsInterface<CloudFunctionGen1HttpEventPayload | Request>;
|
|
24
|
+
supportsReverseMapping(eventResponse: EventResponse<any, any>, response: any, executionContext: ExecutionContextInterface<any>): boolean;
|
|
25
|
+
reverseMap(eventResponse: EventResponse<any, any>, response: any, executionContext: ExecutionContextInterface<any>): GcpFunctionsHttpEventResponsePayload;
|
|
26
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Request, Response } from "@pristine-ts/common";
|
|
2
|
+
import { EventIdManager, EventMapperInterface, EventResponse, EventsExecutionOptionsInterface, ExecutionContextInterface } from "@pristine-ts/core";
|
|
3
|
+
import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
4
|
+
import { GcpFunctionsEventsHandlingStrategyEnum } from "../enums/gcp-functions-events-handling-strategy.enum";
|
|
5
|
+
import { CloudFunctionGen2HttpEventPayload } from "../event-payloads/cloud-function-gen-2-http.event-payload";
|
|
6
|
+
import { GcpFunctionsHttpEventResponsePayload } from "../event-response-payloads/gcp-functions-http.event-response-payload";
|
|
7
|
+
import { BaseGcpHttpEventMapper } from "./base-gcp-http-event.mapper";
|
|
8
|
+
/**
|
|
9
|
+
* Maps a Gen 2 Cloud Function CloudEvent (delivered over HTTP) into Pristine.
|
|
10
|
+
*
|
|
11
|
+
* Gen 2 functions receive CloudEvents in one of two transport modes:
|
|
12
|
+
* - **Binary** — CloudEvent attributes in `ce-*` headers, `data` in the body.
|
|
13
|
+
* - **Structured** — A JSON object in the body with `{specversion, id, type, source, data, ...}`.
|
|
14
|
+
*
|
|
15
|
+
* This mapper handles both. Detection: `ExecutionContextKeynameEnum.GcpCloudFunction`
|
|
16
|
+
* + either `ce-*` headers OR a body with `specversion`.
|
|
17
|
+
*/
|
|
18
|
+
export declare class CloudFunctionGen2HttpEventMapper extends BaseGcpHttpEventMapper implements EventMapperInterface<CloudFunctionGen2HttpEventPayload | Request, GcpFunctionsHttpEventResponsePayload | Response> {
|
|
19
|
+
private readonly logHandler;
|
|
20
|
+
private readonly handlingStrategy;
|
|
21
|
+
private readonly eventIdManager;
|
|
22
|
+
constructor(logHandler: LogHandlerInterface, handlingStrategy: GcpFunctionsEventsHandlingStrategyEnum, eventIdManager: EventIdManager);
|
|
23
|
+
supportsMapping(rawEvent: any, executionContext: ExecutionContextInterface<any>): boolean;
|
|
24
|
+
map(rawEvent: any, executionContext: ExecutionContextInterface<any>): EventsExecutionOptionsInterface<CloudFunctionGen2HttpEventPayload | Request>;
|
|
25
|
+
supportsReverseMapping(eventResponse: EventResponse<any, any>, response: any, executionContext: ExecutionContextInterface<any>): boolean;
|
|
26
|
+
reverseMap(eventResponse: EventResponse<any, any>, response: any, executionContext: ExecutionContextInterface<any>): GcpFunctionsHttpEventResponsePayload;
|
|
27
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Request, Response } from "@pristine-ts/common";
|
|
2
|
+
import { EventIdManager, EventMapperInterface, EventResponse, EventsExecutionOptionsInterface, ExecutionContextInterface } from "@pristine-ts/core";
|
|
3
|
+
import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
4
|
+
import { GcpFunctionsEventsHandlingStrategyEnum } from "../enums/gcp-functions-events-handling-strategy.enum";
|
|
5
|
+
import { CloudRunHttpEventPayload } from "../event-payloads/cloud-run-http.event-payload";
|
|
6
|
+
import { GcpFunctionsHttpEventResponsePayload } from "../event-response-payloads/gcp-functions-http.event-response-payload";
|
|
7
|
+
import { BaseGcpHttpEventMapper } from "./base-gcp-http-event.mapper";
|
|
8
|
+
/**
|
|
9
|
+
* Maps a Cloud Run HTTP request into Pristine. Cloud Run delivers raw HTTP (the
|
|
10
|
+
* container hosts a normal `http.Server`); the entry-point shim normalizes the Node
|
|
11
|
+
* `IncomingMessage` into a plain object before invoking `kernel.handle(...)` with
|
|
12
|
+
* the `GcpCloudRun` execution context.
|
|
13
|
+
*/
|
|
14
|
+
export declare class CloudRunHttpEventMapper extends BaseGcpHttpEventMapper implements EventMapperInterface<CloudRunHttpEventPayload | Request, GcpFunctionsHttpEventResponsePayload | Response> {
|
|
15
|
+
private readonly logHandler;
|
|
16
|
+
private readonly handlingStrategy;
|
|
17
|
+
private readonly eventIdManager;
|
|
18
|
+
constructor(logHandler: LogHandlerInterface, handlingStrategy: GcpFunctionsEventsHandlingStrategyEnum, eventIdManager: EventIdManager);
|
|
19
|
+
supportsMapping(rawEvent: any, executionContext: ExecutionContextInterface<any>): boolean;
|
|
20
|
+
map(rawEvent: any, executionContext: ExecutionContextInterface<any>): EventsExecutionOptionsInterface<CloudRunHttpEventPayload | Request>;
|
|
21
|
+
supportsReverseMapping(eventResponse: EventResponse<any, any>, response: any, executionContext: ExecutionContextInterface<any>): boolean;
|
|
22
|
+
reverseMap(eventResponse: EventResponse<any, any>, response: any, executionContext: ExecutionContextInterface<any>): GcpFunctionsHttpEventResponsePayload;
|
|
23
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pristine-ts/gcp-functions",
|
|
3
|
+
"version": "2.0.16",
|
|
4
|
+
"description": "",
|
|
5
|
+
"module": "dist/lib/esm/gcp-functions.module.js",
|
|
6
|
+
"main": "dist/lib/cjs/gcp-functions.module.js",
|
|
7
|
+
"types": "dist/types/gcp-functions.module.d.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json",
|
|
10
|
+
"prepublish": "npm run build",
|
|
11
|
+
"test": "jest",
|
|
12
|
+
"test:cov": "jest --coverage"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"author": "",
|
|
18
|
+
"license": "ISC",
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@pristine-ts/common": "^2.0.16",
|
|
24
|
+
"@pristine-ts/core": "^2.0.16",
|
|
25
|
+
"@pristine-ts/networking": "^2.0.16"
|
|
26
|
+
},
|
|
27
|
+
"jest": {
|
|
28
|
+
"transform": {
|
|
29
|
+
".(ts|tsx)": "ts-jest"
|
|
30
|
+
},
|
|
31
|
+
"globals": {
|
|
32
|
+
"ts-jest": {
|
|
33
|
+
"tsconfig": {
|
|
34
|
+
"strictNullChecks": false
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"testEnvironment": "node",
|
|
39
|
+
"testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
|
|
40
|
+
"moduleFileExtensions": [
|
|
41
|
+
"ts",
|
|
42
|
+
"tsx",
|
|
43
|
+
"js"
|
|
44
|
+
],
|
|
45
|
+
"coveragePathIgnorePatterns": [
|
|
46
|
+
"/node_modules/",
|
|
47
|
+
"/test/"
|
|
48
|
+
],
|
|
49
|
+
"coverageThreshold": {
|
|
50
|
+
"global": {
|
|
51
|
+
"branches": 90,
|
|
52
|
+
"functions": 95,
|
|
53
|
+
"lines": 95,
|
|
54
|
+
"statements": 95
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"collectCoverageFrom": [
|
|
58
|
+
"src/*.{js,ts}"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"repository": {
|
|
62
|
+
"type": "git",
|
|
63
|
+
"url": "https://github.com/magieno/pristine-ts.git",
|
|
64
|
+
"directory": "packages/gcp-functions"
|
|
65
|
+
},
|
|
66
|
+
"gitHead": "a55d7d59862672a8cbbca4088fed090779b37705"
|
|
67
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# @pristine-ts/gcp-functions
|
|
2
|
+
|
|
3
|
+
HTTP entry mappers for GCP Cloud Functions (Gen 1 + Gen 2) and Cloud Run. Mirror of
|
|
4
|
+
`@pristine-ts/aws-api-gateway`: each mapper supports a dual-mode strategy where
|
|
5
|
+
incoming requests are exposed either as a Pristine `Request` (for controller routing)
|
|
6
|
+
or as a typed event payload (for handler-based processing).
|