@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.
Files changed (90) hide show
  1. package/LICENSE +201 -0
  2. package/dist/lib/cjs/enums/enums.js +19 -0
  3. package/dist/lib/cjs/enums/enums.js.map +1 -0
  4. package/dist/lib/cjs/enums/gcp-functions-event-type.enum.js +17 -0
  5. package/dist/lib/cjs/enums/gcp-functions-event-type.enum.js.map +1 -0
  6. package/dist/lib/cjs/enums/gcp-functions-events-handling-strategy.enum.js +15 -0
  7. package/dist/lib/cjs/enums/gcp-functions-events-handling-strategy.enum.js.map +1 -0
  8. package/dist/lib/cjs/event-payloads/cloud-function-gen-1-http.event-payload.js +19 -0
  9. package/dist/lib/cjs/event-payloads/cloud-function-gen-1-http.event-payload.js.map +1 -0
  10. package/dist/lib/cjs/event-payloads/cloud-function-gen-2-http.event-payload.js +21 -0
  11. package/dist/lib/cjs/event-payloads/cloud-function-gen-2-http.event-payload.js.map +1 -0
  12. package/dist/lib/cjs/event-payloads/cloud-run-http.event-payload.js +19 -0
  13. package/dist/lib/cjs/event-payloads/cloud-run-http.event-payload.js.map +1 -0
  14. package/dist/lib/cjs/event-payloads/event-payloads.js +20 -0
  15. package/dist/lib/cjs/event-payloads/event-payloads.js.map +1 -0
  16. package/dist/lib/cjs/event-response-payloads/event-response-payloads.js +18 -0
  17. package/dist/lib/cjs/event-response-payloads/event-response-payloads.js.map +1 -0
  18. package/dist/lib/cjs/event-response-payloads/gcp-functions-http.event-response-payload.js +23 -0
  19. package/dist/lib/cjs/event-response-payloads/gcp-functions-http.event-response-payload.js.map +1 -0
  20. package/dist/lib/cjs/gcp-functions.configuration-keys.js +14 -0
  21. package/dist/lib/cjs/gcp-functions.configuration-keys.js.map +1 -0
  22. package/dist/lib/cjs/gcp-functions.module.js +62 -0
  23. package/dist/lib/cjs/gcp-functions.module.js.map +1 -0
  24. package/dist/lib/cjs/gcp-functions.module.keyname.js +5 -0
  25. package/dist/lib/cjs/gcp-functions.module.keyname.js.map +1 -0
  26. package/dist/lib/cjs/mappers/base-gcp-http-event.mapper.js +106 -0
  27. package/dist/lib/cjs/mappers/base-gcp-http-event.mapper.js.map +1 -0
  28. package/dist/lib/cjs/mappers/cloud-function-gen-1-http-event.mapper.js +100 -0
  29. package/dist/lib/cjs/mappers/cloud-function-gen-1-http-event.mapper.js.map +1 -0
  30. package/dist/lib/cjs/mappers/cloud-function-gen-2-http-event.mapper.js +121 -0
  31. package/dist/lib/cjs/mappers/cloud-function-gen-2-http-event.mapper.js.map +1 -0
  32. package/dist/lib/cjs/mappers/cloud-run-http-event.mapper.js +85 -0
  33. package/dist/lib/cjs/mappers/cloud-run-http-event.mapper.js.map +1 -0
  34. package/dist/lib/cjs/mappers/mappers.js +21 -0
  35. package/dist/lib/cjs/mappers/mappers.js.map +1 -0
  36. package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  37. package/dist/lib/esm/enums/enums.js +3 -0
  38. package/dist/lib/esm/enums/enums.js.map +1 -0
  39. package/dist/lib/esm/enums/gcp-functions-event-type.enum.js +14 -0
  40. package/dist/lib/esm/enums/gcp-functions-event-type.enum.js.map +1 -0
  41. package/dist/lib/esm/enums/gcp-functions-events-handling-strategy.enum.js +12 -0
  42. package/dist/lib/esm/enums/gcp-functions-events-handling-strategy.enum.js.map +1 -0
  43. package/dist/lib/esm/event-payloads/cloud-function-gen-1-http.event-payload.js +15 -0
  44. package/dist/lib/esm/event-payloads/cloud-function-gen-1-http.event-payload.js.map +1 -0
  45. package/dist/lib/esm/event-payloads/cloud-function-gen-2-http.event-payload.js +17 -0
  46. package/dist/lib/esm/event-payloads/cloud-function-gen-2-http.event-payload.js.map +1 -0
  47. package/dist/lib/esm/event-payloads/cloud-run-http.event-payload.js +15 -0
  48. package/dist/lib/esm/event-payloads/cloud-run-http.event-payload.js.map +1 -0
  49. package/dist/lib/esm/event-payloads/event-payloads.js +4 -0
  50. package/dist/lib/esm/event-payloads/event-payloads.js.map +1 -0
  51. package/dist/lib/esm/event-response-payloads/event-response-payloads.js +2 -0
  52. package/dist/lib/esm/event-response-payloads/event-response-payloads.js.map +1 -0
  53. package/dist/lib/esm/event-response-payloads/gcp-functions-http.event-response-payload.js +19 -0
  54. package/dist/lib/esm/event-response-payloads/gcp-functions-http.event-response-payload.js.map +1 -0
  55. package/dist/lib/esm/gcp-functions.configuration-keys.js +11 -0
  56. package/dist/lib/esm/gcp-functions.configuration-keys.js.map +1 -0
  57. package/dist/lib/esm/gcp-functions.module.js +45 -0
  58. package/dist/lib/esm/gcp-functions.module.js.map +1 -0
  59. package/dist/lib/esm/gcp-functions.module.keyname.js +2 -0
  60. package/dist/lib/esm/gcp-functions.module.keyname.js.map +1 -0
  61. package/dist/lib/esm/mappers/base-gcp-http-event.mapper.js +102 -0
  62. package/dist/lib/esm/mappers/base-gcp-http-event.mapper.js.map +1 -0
  63. package/dist/lib/esm/mappers/cloud-function-gen-1-http-event.mapper.js +97 -0
  64. package/dist/lib/esm/mappers/cloud-function-gen-1-http-event.mapper.js.map +1 -0
  65. package/dist/lib/esm/mappers/cloud-function-gen-2-http-event.mapper.js +118 -0
  66. package/dist/lib/esm/mappers/cloud-function-gen-2-http-event.mapper.js.map +1 -0
  67. package/dist/lib/esm/mappers/cloud-run-http-event.mapper.js +82 -0
  68. package/dist/lib/esm/mappers/cloud-run-http-event.mapper.js.map +1 -0
  69. package/dist/lib/esm/mappers/mappers.js +5 -0
  70. package/dist/lib/esm/mappers/mappers.js.map +1 -0
  71. package/dist/lib/esm/tsconfig.tsbuildinfo +1 -0
  72. package/dist/types/enums/enums.d.ts +2 -0
  73. package/dist/types/enums/gcp-functions-event-type.enum.d.ts +12 -0
  74. package/dist/types/enums/gcp-functions-events-handling-strategy.enum.d.ts +10 -0
  75. package/dist/types/event-payloads/cloud-function-gen-1-http.event-payload.d.ts +20 -0
  76. package/dist/types/event-payloads/cloud-function-gen-2-http.event-payload.d.ts +32 -0
  77. package/dist/types/event-payloads/cloud-run-http.event-payload.d.ts +20 -0
  78. package/dist/types/event-payloads/event-payloads.d.ts +3 -0
  79. package/dist/types/event-response-payloads/event-response-payloads.d.ts +1 -0
  80. package/dist/types/event-response-payloads/gcp-functions-http.event-response-payload.d.ts +20 -0
  81. package/dist/types/gcp-functions.configuration-keys.d.ts +31 -0
  82. package/dist/types/gcp-functions.module.d.ts +8 -0
  83. package/dist/types/gcp-functions.module.keyname.d.ts +1 -0
  84. package/dist/types/mappers/base-gcp-http-event.mapper.d.ts +37 -0
  85. package/dist/types/mappers/cloud-function-gen-1-http-event.mapper.d.ts +26 -0
  86. package/dist/types/mappers/cloud-function-gen-2-http-event.mapper.d.ts +27 -0
  87. package/dist/types/mappers/cloud-run-http-event.mapper.d.ts +23 -0
  88. package/dist/types/mappers/mappers.d.ts +4 -0
  89. package/package.json +67 -0
  90. 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
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./base-gcp-http-event.mapper";
2
+ export * from "./cloud-function-gen-1-http-event.mapper";
3
+ export * from "./cloud-function-gen-2-http-event.mapper";
4
+ export * from "./cloud-run-http-event.mapper";
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).