@pristine-ts/gcp 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/clients/clients.js +22 -0
- package/dist/lib/cjs/clients/clients.js.map +1 -0
- package/dist/lib/cjs/clients/cloud-storage.client.js +189 -0
- package/dist/lib/cjs/clients/cloud-storage.client.js.map +1 -0
- package/dist/lib/cjs/clients/eventarc.client.js +146 -0
- package/dist/lib/cjs/clients/eventarc.client.js.map +1 -0
- package/dist/lib/cjs/clients/firestore.client.js +238 -0
- package/dist/lib/cjs/clients/firestore.client.js.map +1 -0
- package/dist/lib/cjs/clients/pub-sub.client.js +97 -0
- package/dist/lib/cjs/clients/pub-sub.client.js.map +1 -0
- package/dist/lib/cjs/clients/secret-manager.client.js +118 -0
- package/dist/lib/cjs/clients/secret-manager.client.js.map +1 -0
- package/dist/lib/cjs/decorators/decorators.js +18 -0
- package/dist/lib/cjs/decorators/decorators.js.map +1 -0
- package/dist/lib/cjs/decorators/dynamic-collection-name.decorator.js +33 -0
- package/dist/lib/cjs/decorators/dynamic-collection-name.decorator.js.map +1 -0
- package/dist/lib/cjs/enums/cloud-storage-event-type.enum.js +16 -0
- package/dist/lib/cjs/enums/cloud-storage-event-type.enum.js.map +1 -0
- package/dist/lib/cjs/enums/cloud-storage-presigned-operation-type.enum.js +13 -0
- package/dist/lib/cjs/enums/cloud-storage-presigned-operation-type.enum.js.map +1 -0
- package/dist/lib/cjs/enums/enums.js +22 -0
- package/dist/lib/cjs/enums/enums.js.map +1 -0
- package/dist/lib/cjs/enums/eventarc-event-type.enum.js +12 -0
- package/dist/lib/cjs/enums/eventarc-event-type.enum.js.map +1 -0
- package/dist/lib/cjs/enums/firestore-event-type.enum.js +16 -0
- package/dist/lib/cjs/enums/firestore-event-type.enum.js.map +1 -0
- package/dist/lib/cjs/enums/pub-sub-event-type.enum.js +13 -0
- package/dist/lib/cjs/enums/pub-sub-event-type.enum.js.map +1 -0
- package/dist/lib/cjs/errors/errors.js +20 -0
- package/dist/lib/cjs/errors/errors.js.map +1 -0
- package/dist/lib/cjs/errors/eventarc-publish.error.js +17 -0
- package/dist/lib/cjs/errors/eventarc-publish.error.js.map +1 -0
- package/dist/lib/cjs/errors/get-secret.error.js +17 -0
- package/dist/lib/cjs/errors/get-secret.error.js.map +1 -0
- package/dist/lib/cjs/errors/pub-sub-publish.error.js +19 -0
- package/dist/lib/cjs/errors/pub-sub-publish.error.js.map +1 -0
- package/dist/lib/cjs/event-payloads/cloud-storage.event-payload.js +11 -0
- package/dist/lib/cjs/event-payloads/cloud-storage.event-payload.js.map +1 -0
- package/dist/lib/cjs/event-payloads/event-payloads.js +21 -0
- package/dist/lib/cjs/event-payloads/event-payloads.js.map +1 -0
- package/dist/lib/cjs/event-payloads/eventarc.event-payload.js +11 -0
- package/dist/lib/cjs/event-payloads/eventarc.event-payload.js.map +1 -0
- package/dist/lib/cjs/event-payloads/firestore.event-payload.js +11 -0
- package/dist/lib/cjs/event-payloads/firestore.event-payload.js.map +1 -0
- package/dist/lib/cjs/event-payloads/pub-sub.event-payload.js +17 -0
- package/dist/lib/cjs/event-payloads/pub-sub.event-payload.js.map +1 -0
- package/dist/lib/cjs/gcp.configuration-keys.js +20 -0
- package/dist/lib/cjs/gcp.configuration-keys.js.map +1 -0
- package/dist/lib/cjs/gcp.module.js +76 -0
- package/dist/lib/cjs/gcp.module.js.map +1 -0
- package/dist/lib/cjs/gcp.module.keyname.js +5 -0
- package/dist/lib/cjs/gcp.module.keyname.js.map +1 -0
- package/dist/lib/cjs/interfaces/client-options.interface.js +3 -0
- package/dist/lib/cjs/interfaces/client-options.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/cloud-storage-client.interface.js +3 -0
- package/dist/lib/cjs/interfaces/cloud-storage-client.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/eventarc-client.interface.js +3 -0
- package/dist/lib/cjs/interfaces/eventarc-client.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/firestore-client.interface.js +3 -0
- package/dist/lib/cjs/interfaces/firestore-client.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/interfaces.js +23 -0
- package/dist/lib/cjs/interfaces/interfaces.js.map +1 -0
- package/dist/lib/cjs/interfaces/pub-sub-client.interface.js +3 -0
- package/dist/lib/cjs/interfaces/pub-sub-client.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/secret-manager-client.interface.js +3 -0
- package/dist/lib/cjs/interfaces/secret-manager-client.interface.js.map +1 -0
- package/dist/lib/cjs/mappers/cloud-storage-event.mapper.js +87 -0
- package/dist/lib/cjs/mappers/cloud-storage-event.mapper.js.map +1 -0
- package/dist/lib/cjs/mappers/eventarc-event.mapper.js +84 -0
- package/dist/lib/cjs/mappers/eventarc-event.mapper.js.map +1 -0
- package/dist/lib/cjs/mappers/firestore-event.mapper.js +78 -0
- package/dist/lib/cjs/mappers/firestore-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/mappers/pub-sub-event.mapper.js +78 -0
- package/dist/lib/cjs/mappers/pub-sub-event.mapper.js.map +1 -0
- package/dist/lib/cjs/models/dynamic-collection-name.model.js +11 -0
- package/dist/lib/cjs/models/dynamic-collection-name.model.js.map +1 -0
- package/dist/lib/cjs/models/eventarc-message.model.js +10 -0
- package/dist/lib/cjs/models/eventarc-message.model.js.map +1 -0
- package/dist/lib/cjs/models/models.js +20 -0
- package/dist/lib/cjs/models/models.js.map +1 -0
- package/dist/lib/cjs/models/pub-sub-message-sent-confirmation.model.js +11 -0
- package/dist/lib/cjs/models/pub-sub-message-sent-confirmation.model.js.map +1 -0
- package/dist/lib/cjs/models/pub-sub-message.model.js +11 -0
- package/dist/lib/cjs/models/pub-sub-message.model.js.map +1 -0
- package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/lib/esm/clients/clients.js +6 -0
- package/dist/lib/esm/clients/clients.js.map +1 -0
- package/dist/lib/esm/clients/cloud-storage.client.js +186 -0
- package/dist/lib/esm/clients/cloud-storage.client.js.map +1 -0
- package/dist/lib/esm/clients/eventarc.client.js +110 -0
- package/dist/lib/esm/clients/eventarc.client.js.map +1 -0
- package/dist/lib/esm/clients/firestore.client.js +235 -0
- package/dist/lib/esm/clients/firestore.client.js.map +1 -0
- package/dist/lib/esm/clients/pub-sub.client.js +94 -0
- package/dist/lib/esm/clients/pub-sub.client.js.map +1 -0
- package/dist/lib/esm/clients/secret-manager.client.js +115 -0
- package/dist/lib/esm/clients/secret-manager.client.js.map +1 -0
- package/dist/lib/esm/decorators/decorators.js +2 -0
- package/dist/lib/esm/decorators/decorators.js.map +1 -0
- package/dist/lib/esm/decorators/dynamic-collection-name.decorator.js +29 -0
- package/dist/lib/esm/decorators/dynamic-collection-name.decorator.js.map +1 -0
- package/dist/lib/esm/enums/cloud-storage-event-type.enum.js +13 -0
- package/dist/lib/esm/enums/cloud-storage-event-type.enum.js.map +1 -0
- package/dist/lib/esm/enums/cloud-storage-presigned-operation-type.enum.js +10 -0
- package/dist/lib/esm/enums/cloud-storage-presigned-operation-type.enum.js.map +1 -0
- package/dist/lib/esm/enums/enums.js +6 -0
- package/dist/lib/esm/enums/enums.js.map +1 -0
- package/dist/lib/esm/enums/eventarc-event-type.enum.js +9 -0
- package/dist/lib/esm/enums/eventarc-event-type.enum.js.map +1 -0
- package/dist/lib/esm/enums/firestore-event-type.enum.js +13 -0
- package/dist/lib/esm/enums/firestore-event-type.enum.js.map +1 -0
- package/dist/lib/esm/enums/pub-sub-event-type.enum.js +10 -0
- package/dist/lib/esm/enums/pub-sub-event-type.enum.js.map +1 -0
- package/dist/lib/esm/errors/errors.js +4 -0
- package/dist/lib/esm/errors/errors.js.map +1 -0
- package/dist/lib/esm/errors/eventarc-publish.error.js +13 -0
- package/dist/lib/esm/errors/eventarc-publish.error.js.map +1 -0
- package/dist/lib/esm/errors/get-secret.error.js +13 -0
- package/dist/lib/esm/errors/get-secret.error.js.map +1 -0
- package/dist/lib/esm/errors/pub-sub-publish.error.js +15 -0
- package/dist/lib/esm/errors/pub-sub-publish.error.js.map +1 -0
- package/dist/lib/esm/event-payloads/cloud-storage.event-payload.js +7 -0
- package/dist/lib/esm/event-payloads/cloud-storage.event-payload.js.map +1 -0
- package/dist/lib/esm/event-payloads/event-payloads.js +5 -0
- package/dist/lib/esm/event-payloads/event-payloads.js.map +1 -0
- package/dist/lib/esm/event-payloads/eventarc.event-payload.js +7 -0
- package/dist/lib/esm/event-payloads/eventarc.event-payload.js.map +1 -0
- package/dist/lib/esm/event-payloads/firestore.event-payload.js +7 -0
- package/dist/lib/esm/event-payloads/firestore.event-payload.js.map +1 -0
- package/dist/lib/esm/event-payloads/pub-sub.event-payload.js +13 -0
- package/dist/lib/esm/event-payloads/pub-sub.event-payload.js.map +1 -0
- package/dist/lib/esm/gcp.configuration-keys.js +17 -0
- package/dist/lib/esm/gcp.configuration-keys.js.map +1 -0
- package/dist/lib/esm/gcp.module.js +59 -0
- package/dist/lib/esm/gcp.module.js.map +1 -0
- package/dist/lib/esm/gcp.module.keyname.js +2 -0
- package/dist/lib/esm/gcp.module.keyname.js.map +1 -0
- package/dist/lib/esm/interfaces/client-options.interface.js +2 -0
- package/dist/lib/esm/interfaces/client-options.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/cloud-storage-client.interface.js +2 -0
- package/dist/lib/esm/interfaces/cloud-storage-client.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/eventarc-client.interface.js +2 -0
- package/dist/lib/esm/interfaces/eventarc-client.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/firestore-client.interface.js +2 -0
- package/dist/lib/esm/interfaces/firestore-client.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/interfaces.js +7 -0
- package/dist/lib/esm/interfaces/interfaces.js.map +1 -0
- package/dist/lib/esm/interfaces/pub-sub-client.interface.js +2 -0
- package/dist/lib/esm/interfaces/pub-sub-client.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/secret-manager-client.interface.js +2 -0
- package/dist/lib/esm/interfaces/secret-manager-client.interface.js.map +1 -0
- package/dist/lib/esm/mappers/cloud-storage-event.mapper.js +84 -0
- package/dist/lib/esm/mappers/cloud-storage-event.mapper.js.map +1 -0
- package/dist/lib/esm/mappers/eventarc-event.mapper.js +81 -0
- package/dist/lib/esm/mappers/eventarc-event.mapper.js.map +1 -0
- package/dist/lib/esm/mappers/firestore-event.mapper.js +75 -0
- package/dist/lib/esm/mappers/firestore-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/mappers/pub-sub-event.mapper.js +75 -0
- package/dist/lib/esm/mappers/pub-sub-event.mapper.js.map +1 -0
- package/dist/lib/esm/models/dynamic-collection-name.model.js +7 -0
- package/dist/lib/esm/models/dynamic-collection-name.model.js.map +1 -0
- package/dist/lib/esm/models/eventarc-message.model.js +6 -0
- package/dist/lib/esm/models/eventarc-message.model.js.map +1 -0
- package/dist/lib/esm/models/models.js +4 -0
- package/dist/lib/esm/models/models.js.map +1 -0
- package/dist/lib/esm/models/pub-sub-message-sent-confirmation.model.js +7 -0
- package/dist/lib/esm/models/pub-sub-message-sent-confirmation.model.js.map +1 -0
- package/dist/lib/esm/models/pub-sub-message.model.js +7 -0
- package/dist/lib/esm/models/pub-sub-message.model.js.map +1 -0
- package/dist/lib/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/types/clients/clients.d.ts +5 -0
- package/dist/types/clients/cloud-storage.client.d.ts +26 -0
- package/dist/types/clients/eventarc.client.d.ts +26 -0
- package/dist/types/clients/firestore.client.d.ts +47 -0
- package/dist/types/clients/pub-sub.client.d.ts +23 -0
- package/dist/types/clients/secret-manager.client.d.ts +24 -0
- package/dist/types/decorators/decorators.d.ts +1 -0
- package/dist/types/decorators/dynamic-collection-name.decorator.d.ts +22 -0
- package/dist/types/enums/cloud-storage-event-type.enum.d.ts +11 -0
- package/dist/types/enums/cloud-storage-presigned-operation-type.enum.d.ts +8 -0
- package/dist/types/enums/enums.d.ts +5 -0
- package/dist/types/enums/eventarc-event-type.enum.d.ts +7 -0
- package/dist/types/enums/firestore-event-type.enum.d.ts +11 -0
- package/dist/types/enums/pub-sub-event-type.enum.d.ts +8 -0
- package/dist/types/errors/errors.d.ts +3 -0
- package/dist/types/errors/eventarc-publish.error.d.ts +8 -0
- package/dist/types/errors/get-secret.error.d.ts +8 -0
- package/dist/types/errors/pub-sub-publish.error.d.ts +14 -0
- package/dist/types/event-payloads/cloud-storage.event-payload.d.ts +55 -0
- package/dist/types/event-payloads/event-payloads.d.ts +4 -0
- package/dist/types/event-payloads/eventarc.event-payload.d.ts +39 -0
- package/dist/types/event-payloads/firestore.event-payload.d.ts +43 -0
- package/dist/types/event-payloads/pub-sub.event-payload.d.ts +37 -0
- package/dist/types/gcp.configuration-keys.d.ts +35 -0
- package/dist/types/gcp.module.d.ts +11 -0
- package/dist/types/gcp.module.keyname.d.ts +1 -0
- package/dist/types/interfaces/client-options.interface.d.ts +19 -0
- package/dist/types/interfaces/cloud-storage-client.interface.d.ts +14 -0
- package/dist/types/interfaces/eventarc-client.interface.d.ts +5 -0
- package/dist/types/interfaces/firestore-client.interface.d.ts +27 -0
- package/dist/types/interfaces/interfaces.d.ts +6 -0
- package/dist/types/interfaces/pub-sub-client.interface.d.ts +8 -0
- package/dist/types/interfaces/secret-manager-client.interface.d.ts +9 -0
- package/dist/types/mappers/cloud-storage-event.mapper.d.ts +22 -0
- package/dist/types/mappers/eventarc-event.mapper.d.ts +22 -0
- package/dist/types/mappers/firestore-event.mapper.d.ts +17 -0
- package/dist/types/mappers/mappers.d.ts +4 -0
- package/dist/types/mappers/pub-sub-event.mapper.d.ts +23 -0
- package/dist/types/models/dynamic-collection-name.model.d.ts +8 -0
- package/dist/types/models/eventarc-message.model.d.ts +25 -0
- package/dist/types/models/models.d.ts +3 -0
- package/dist/types/models/pub-sub-message-sent-confirmation.model.d.ts +7 -0
- package/dist/types/models/pub-sub-message.model.d.ts +21 -0
- package/package.json +72 -0
- package/readme.md +32 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
2
|
+
import { Storage } from "@google-cloud/storage";
|
|
3
|
+
import { Readable } from "stream";
|
|
4
|
+
import { CloudStorageClientInterface } from "../interfaces/cloud-storage-client.interface";
|
|
5
|
+
import { GcpClientOptionsInterface } from "../interfaces/client-options.interface";
|
|
6
|
+
import { CloudStoragePresignedOperationTypeEnum } from "../enums/cloud-storage-presigned-operation-type.enum";
|
|
7
|
+
/**
|
|
8
|
+
* Client for Google Cloud Storage. Mirrors `S3Client` in `@pristine-ts/aws`.
|
|
9
|
+
*/
|
|
10
|
+
export declare class CloudStorageClient implements CloudStorageClientInterface {
|
|
11
|
+
private readonly logHandler;
|
|
12
|
+
private readonly projectId;
|
|
13
|
+
private client?;
|
|
14
|
+
constructor(logHandler: LogHandlerInterface, projectId: string);
|
|
15
|
+
getClient(): Storage;
|
|
16
|
+
get(bucketName: string, key: string, options?: Partial<GcpClientOptionsInterface>): Promise<Buffer>;
|
|
17
|
+
getObjectBodyAsArrayBuffer(bucketName: string, key: string, options?: Partial<GcpClientOptionsInterface>): Promise<ArrayBuffer>;
|
|
18
|
+
listKeys(bucketName: string, prefix?: string, options?: Partial<GcpClientOptionsInterface>): Promise<string[]>;
|
|
19
|
+
upload(bucketName: string, key: string, data: Buffer | string | Readable, contentType?: string, contentEncoding?: string, options?: Partial<GcpClientOptionsInterface>): Promise<void>;
|
|
20
|
+
download(bucketName: string, key: string, options?: Partial<GcpClientOptionsInterface>): Promise<Readable>;
|
|
21
|
+
deleteObject(bucketName: string, key: string, options?: Partial<GcpClientOptionsInterface>): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a V4 signed URL granting `operation` on the object for `expiresInSeconds`.
|
|
24
|
+
*/
|
|
25
|
+
createSignedUrl(bucketName: string, key: string, operation: CloudStoragePresignedOperationTypeEnum, expiresInSeconds?: number): Promise<string>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
2
|
+
import { PublisherClient } from "@google-cloud/eventarc-publishing";
|
|
3
|
+
import { EventarcClientInterface } from "../interfaces/eventarc-client.interface";
|
|
4
|
+
import { EventarcMessageModel } from "../models/eventarc-message.model";
|
|
5
|
+
import { GcpClientOptionsInterface } from "../interfaces/client-options.interface";
|
|
6
|
+
/**
|
|
7
|
+
* Client for publishing CloudEvents through Eventarc. Mirrors `EventBridgeClient` in
|
|
8
|
+
* `@pristine-ts/aws`. Uses the Eventarc Publishing API (`PublisherClient`) which lets
|
|
9
|
+
* services emit CloudEvents to a channel for routing.
|
|
10
|
+
*/
|
|
11
|
+
export declare class EventarcClient implements EventarcClientInterface {
|
|
12
|
+
private readonly logHandler;
|
|
13
|
+
private readonly projectId;
|
|
14
|
+
private readonly region;
|
|
15
|
+
private client?;
|
|
16
|
+
constructor(logHandler: LogHandlerInterface, projectId: string, region: string);
|
|
17
|
+
getClient(): PublisherClient;
|
|
18
|
+
/**
|
|
19
|
+
* Publish one or more CloudEvents to an Eventarc channel.
|
|
20
|
+
*
|
|
21
|
+
* @param events One event or a batch.
|
|
22
|
+
* @param channel Channel id (bare or fully-qualified). Defaults to the configured
|
|
23
|
+
* project's default region channel `projects/{p}/locations/{r}/channels/default`.
|
|
24
|
+
*/
|
|
25
|
+
publish(events: EventarcMessageModel | EventarcMessageModel[], channel?: string, options?: Partial<GcpClientOptionsInterface>): Promise<void>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
2
|
+
import { Firestore } from "@google-cloud/firestore";
|
|
3
|
+
import { FirestoreClientInterface } from "../interfaces/firestore-client.interface";
|
|
4
|
+
/**
|
|
5
|
+
* Client for Google Cloud Firestore (Native mode). Provides typed CRUD against a
|
|
6
|
+
* model class plus a `findBySecondaryIndex` for indexed field-equality lookups.
|
|
7
|
+
*
|
|
8
|
+
* Document↔object mapping uses the class name (lowercased) as the collection key;
|
|
9
|
+
* fields are persisted verbatim via property copy. A typed decorator-based mapper
|
|
10
|
+
* (`@firestoreCollection` / `@firestoreField`) is a future extension.
|
|
11
|
+
*/
|
|
12
|
+
export declare class FirestoreClient implements FirestoreClientInterface {
|
|
13
|
+
private readonly logHandler;
|
|
14
|
+
private readonly projectId;
|
|
15
|
+
private client?;
|
|
16
|
+
constructor(logHandler: LogHandlerInterface, projectId: string);
|
|
17
|
+
getClient(): Firestore;
|
|
18
|
+
/**
|
|
19
|
+
* Resolves the Firestore collection name for a model class — the class name
|
|
20
|
+
* lowercased.
|
|
21
|
+
*/
|
|
22
|
+
private getCollectionName;
|
|
23
|
+
get<T>(classType: {
|
|
24
|
+
new (): T;
|
|
25
|
+
}, id: string): Promise<T | undefined>;
|
|
26
|
+
list<T>(classType: {
|
|
27
|
+
new (): T;
|
|
28
|
+
}, options?: {
|
|
29
|
+
limit?: number;
|
|
30
|
+
startAfter?: any;
|
|
31
|
+
}): Promise<T[]>;
|
|
32
|
+
create<T>(item: T): Promise<T>;
|
|
33
|
+
update<T>(item: T): Promise<T>;
|
|
34
|
+
save<T>(item: T): Promise<T>;
|
|
35
|
+
delete<T>(classType: {
|
|
36
|
+
new (): T;
|
|
37
|
+
}, id: string): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Find documents by a field-equality predicate. Firestore requires a composite index
|
|
40
|
+
* for compound queries; for the single-field case this returns immediately.
|
|
41
|
+
*/
|
|
42
|
+
findBySecondaryIndex<T>(classType: {
|
|
43
|
+
new (): T;
|
|
44
|
+
}, field: string, value: any, options?: {
|
|
45
|
+
limit?: number;
|
|
46
|
+
}): Promise<T[]>;
|
|
47
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
2
|
+
import { PubSub } from "@google-cloud/pubsub";
|
|
3
|
+
import { PubSubClientInterface } from "../interfaces/pub-sub-client.interface";
|
|
4
|
+
import { PubSubMessageModel } from "../models/pub-sub-message.model";
|
|
5
|
+
import { PubSubMessageSentConfirmationModel } from "../models/pub-sub-message-sent-confirmation.model";
|
|
6
|
+
import { GcpClientOptionsInterface } from "../interfaces/client-options.interface";
|
|
7
|
+
/**
|
|
8
|
+
* Client for Google Cloud Pub/Sub. Mirrors `SqsClient` (publish-side) and the topic
|
|
9
|
+
* half of EventBridge in `@pristine-ts/aws`.
|
|
10
|
+
*/
|
|
11
|
+
export declare class PubSubClient implements PubSubClientInterface {
|
|
12
|
+
private readonly logHandler;
|
|
13
|
+
private readonly projectId;
|
|
14
|
+
private client?;
|
|
15
|
+
constructor(logHandler: LogHandlerInterface, projectId: string);
|
|
16
|
+
getClient(): PubSub;
|
|
17
|
+
/**
|
|
18
|
+
* Publishes a single message to a topic. `topic` accepts either a bare topic name
|
|
19
|
+
* (e.g. `"my-topic"`) or a fully-qualified resource name
|
|
20
|
+
* (`"projects/my-proj/topics/my-topic"`).
|
|
21
|
+
*/
|
|
22
|
+
publish(topic: string, message: PubSubMessageModel, options?: Partial<GcpClientOptionsInterface>): Promise<PubSubMessageSentConfirmationModel>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { LogHandlerInterface } from "@pristine-ts/logging";
|
|
2
|
+
import { SecretManagerServiceClient } from "@google-cloud/secret-manager";
|
|
3
|
+
import { SecretManagerClientInterface } from "../interfaces/secret-manager-client.interface";
|
|
4
|
+
import { GcpClientOptionsInterface } from "../interfaces/client-options.interface";
|
|
5
|
+
/**
|
|
6
|
+
* Client for Google Cloud Secret Manager. Mirrors `SecretsManagerClient`.
|
|
7
|
+
*
|
|
8
|
+
* `secretName` accepts either a bare secret id (e.g. `"my-secret"`, in which case the
|
|
9
|
+
* latest version of the secret in the configured project is fetched) or a fully
|
|
10
|
+
* qualified version resource name
|
|
11
|
+
* (`"projects/p/secrets/my-secret/versions/latest"`).
|
|
12
|
+
*/
|
|
13
|
+
export declare class SecretManagerClient implements SecretManagerClientInterface {
|
|
14
|
+
private readonly logHandler;
|
|
15
|
+
private readonly projectId;
|
|
16
|
+
private client?;
|
|
17
|
+
constructor(logHandler: LogHandlerInterface, projectId: string);
|
|
18
|
+
getClient(): SecretManagerServiceClient;
|
|
19
|
+
private toVersionResourceName;
|
|
20
|
+
getSecret(secretName: string, options?: Partial<GcpClientOptionsInterface>): Promise<{
|
|
21
|
+
[key: string]: string;
|
|
22
|
+
}>;
|
|
23
|
+
getSecretKey(secretName: string, key: string, options?: Partial<GcpClientOptionsInterface>): Promise<string>;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./dynamic-collection-name.decorator";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DynamicCollectionNameModel } from "../models/dynamic-collection-name.model";
|
|
2
|
+
/**
|
|
3
|
+
* Symbol used to stamp the resolved Firestore collection name onto a class prototype.
|
|
4
|
+
* Mirrors `DynamoDbTable` from `@awslabs-community-fork/dynamodb-data-mapper`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const FirestoreCollection: unique symbol;
|
|
7
|
+
/**
|
|
8
|
+
* The registry where the Firestore collection names are saved.
|
|
9
|
+
*/
|
|
10
|
+
export declare const dynamicCollectionNameRegistry: DynamicCollectionNameModel[];
|
|
11
|
+
/**
|
|
12
|
+
* This decorator is placed on a class that will be used with Firestore.
|
|
13
|
+
* It registers the class against a configuration token name; during `GcpModule.afterInit`,
|
|
14
|
+
* the token is resolved from the DI container (or from an environment variable as a
|
|
15
|
+
* fallback) and the resulting collection name is stamped onto the class prototype under
|
|
16
|
+
* the `FirestoreCollection` symbol.
|
|
17
|
+
*
|
|
18
|
+
* Mirrors `@dynamicTableName` in `@pristine-ts/aws`.
|
|
19
|
+
*
|
|
20
|
+
* @param name The container token whose value is the Firestore collection name.
|
|
21
|
+
*/
|
|
22
|
+
export declare const dynamicCollectionName: (name: string) => (constructor: any) => void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event types coming from GCP Cloud Storage object change events delivered via CloudEvents.
|
|
3
|
+
* CloudEvent `type` values map 1:1 with these enum values.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum CloudStorageEventType {
|
|
6
|
+
UnknownCloudStorageEvent = "UnknownCloudStorageEvent",
|
|
7
|
+
ObjectFinalized = "google.cloud.storage.object.v1.finalized",
|
|
8
|
+
ObjectDeleted = "google.cloud.storage.object.v1.deleted",
|
|
9
|
+
ObjectArchived = "google.cloud.storage.object.v1.archived",
|
|
10
|
+
ObjectMetadataUpdated = "google.cloud.storage.object.v1.metadataUpdated"
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event types coming from GCP Firestore document change events delivered via CloudEvents.
|
|
3
|
+
* CloudEvent `type` values map 1:1 with these enum values.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum FirestoreEventType {
|
|
6
|
+
UnknownFirestoreEvent = "UnknownFirestoreEvent",
|
|
7
|
+
DocumentCreated = "google.cloud.firestore.document.v1.created",
|
|
8
|
+
DocumentUpdated = "google.cloud.firestore.document.v1.updated",
|
|
9
|
+
DocumentDeleted = "google.cloud.firestore.document.v1.deleted",
|
|
10
|
+
DocumentWritten = "google.cloud.firestore.document.v1.written"
|
|
11
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event types coming from GCP Pub/Sub. Pub/Sub itself only has one delivery shape
|
|
3
|
+
* (a message), so unlike S3 we don't enumerate sub-operations here.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum PubSubEventType {
|
|
6
|
+
Message = "PUB_SUB_MESSAGE",
|
|
7
|
+
UnknownPubSubEvent = "UnknownPubSubEvent"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown by `SecretManagerClient` when a secret retrieval fails (not found, missing
|
|
3
|
+
* payload, JSON parse error, missing key). Mirrors `GetSecretSecretsManagerError`
|
|
4
|
+
* in `@pristine-ts/aws`.
|
|
5
|
+
*/
|
|
6
|
+
export declare class GetSecretError extends Error {
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown by `PubSubClient` when publishing a message fails. Mirrors
|
|
3
|
+
* `SqsSendMessageError` in `@pristine-ts/aws`.
|
|
4
|
+
*/
|
|
5
|
+
export declare class PubSubPublishError extends Error {
|
|
6
|
+
readonly cause: unknown;
|
|
7
|
+
readonly topic: string;
|
|
8
|
+
readonly attributes?: {
|
|
9
|
+
[key: string]: string;
|
|
10
|
+
} | undefined;
|
|
11
|
+
constructor(cause: unknown, topic: string, attributes?: {
|
|
12
|
+
[key: string]: string;
|
|
13
|
+
} | undefined);
|
|
14
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Pristine event payload for a parsed GCP Cloud Storage CloudEvent.
|
|
3
|
+
* Mirrors `S3EventPayload` in spirit.
|
|
4
|
+
*/
|
|
5
|
+
export declare class CloudStorageEventPayload {
|
|
6
|
+
/**
|
|
7
|
+
* The CloudEvent `type` (e.g. `google.cloud.storage.object.v1.finalized`).
|
|
8
|
+
*/
|
|
9
|
+
eventType: string;
|
|
10
|
+
/**
|
|
11
|
+
* The CloudEvent `source` (e.g. `//storage.googleapis.com/projects/_/buckets/my-bucket`).
|
|
12
|
+
*/
|
|
13
|
+
source: string;
|
|
14
|
+
/**
|
|
15
|
+
* The CloudEvent `time`, parsed.
|
|
16
|
+
*/
|
|
17
|
+
eventTime?: Date;
|
|
18
|
+
/**
|
|
19
|
+
* The bucket name extracted from the event's `data` payload.
|
|
20
|
+
*/
|
|
21
|
+
bucket: string;
|
|
22
|
+
/**
|
|
23
|
+
* The object name (path within the bucket).
|
|
24
|
+
*/
|
|
25
|
+
name: string;
|
|
26
|
+
/**
|
|
27
|
+
* The generation number of the object.
|
|
28
|
+
*/
|
|
29
|
+
generation?: string;
|
|
30
|
+
/**
|
|
31
|
+
* The metageneration number of the object.
|
|
32
|
+
*/
|
|
33
|
+
metageneration?: string;
|
|
34
|
+
/**
|
|
35
|
+
* The MIME content type of the object.
|
|
36
|
+
*/
|
|
37
|
+
contentType?: string;
|
|
38
|
+
/**
|
|
39
|
+
* The object size in bytes (as a string — Cloud Storage returns int64 as string).
|
|
40
|
+
*/
|
|
41
|
+
size?: string;
|
|
42
|
+
/**
|
|
43
|
+
* The MD5 hash of the object (base64-encoded).
|
|
44
|
+
*/
|
|
45
|
+
md5Hash?: string;
|
|
46
|
+
/**
|
|
47
|
+
* The CRC32C checksum of the object (base64-encoded).
|
|
48
|
+
*/
|
|
49
|
+
crc32c?: string;
|
|
50
|
+
/**
|
|
51
|
+
* The raw `data` field from the CloudEvent — kept verbatim for consumers that need
|
|
52
|
+
* fields not promoted above.
|
|
53
|
+
*/
|
|
54
|
+
data: any;
|
|
55
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Pristine event payload for any CloudEvent that didn't match a more-specific
|
|
3
|
+
* mapper. Mirrors the role of `EventBridgePayload` for AWS.
|
|
4
|
+
*/
|
|
5
|
+
export declare class EventarcEventPayload {
|
|
6
|
+
/**
|
|
7
|
+
* CloudEvent `id`.
|
|
8
|
+
*/
|
|
9
|
+
id: string;
|
|
10
|
+
/**
|
|
11
|
+
* CloudEvent `specversion`.
|
|
12
|
+
*/
|
|
13
|
+
specVersion: string;
|
|
14
|
+
/**
|
|
15
|
+
* CloudEvent `type`.
|
|
16
|
+
*/
|
|
17
|
+
type: string;
|
|
18
|
+
/**
|
|
19
|
+
* CloudEvent `source`.
|
|
20
|
+
*/
|
|
21
|
+
source: string;
|
|
22
|
+
/**
|
|
23
|
+
* CloudEvent `subject`, if present.
|
|
24
|
+
*/
|
|
25
|
+
subject?: string;
|
|
26
|
+
/**
|
|
27
|
+
* CloudEvent `time`, parsed if present.
|
|
28
|
+
*/
|
|
29
|
+
time?: Date;
|
|
30
|
+
/**
|
|
31
|
+
* CloudEvent `datacontenttype`, if present.
|
|
32
|
+
*/
|
|
33
|
+
dataContentType?: string;
|
|
34
|
+
/**
|
|
35
|
+
* The CloudEvent `data` payload, verbatim. Type-agnostic on purpose — this is the
|
|
36
|
+
* catch-all mapper.
|
|
37
|
+
*/
|
|
38
|
+
data: any;
|
|
39
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Pristine event payload for a parsed GCP Firestore document-change CloudEvent.
|
|
3
|
+
* Mirrors `DynamodbEventPayload` in spirit.
|
|
4
|
+
*/
|
|
5
|
+
export declare class FirestoreEventPayload {
|
|
6
|
+
/**
|
|
7
|
+
* The CloudEvent `type` (e.g. `google.cloud.firestore.document.v1.created`).
|
|
8
|
+
*/
|
|
9
|
+
eventType: string;
|
|
10
|
+
/**
|
|
11
|
+
* The CloudEvent `source` (e.g. `//firestore.googleapis.com/projects/p/databases/(default)`).
|
|
12
|
+
*/
|
|
13
|
+
source: string;
|
|
14
|
+
/**
|
|
15
|
+
* The CloudEvent `time`, parsed.
|
|
16
|
+
*/
|
|
17
|
+
eventTime?: Date;
|
|
18
|
+
/**
|
|
19
|
+
* The full document path that changed (e.g. `projects/p/databases/(default)/documents/users/abc`).
|
|
20
|
+
*/
|
|
21
|
+
documentPath: string;
|
|
22
|
+
/**
|
|
23
|
+
* The Firestore document value after the change. Absent for `deleted` events.
|
|
24
|
+
* Keys are field names, values are Firestore-wire values (e.g. `{stringValue: "..."}`).
|
|
25
|
+
*/
|
|
26
|
+
value?: {
|
|
27
|
+
[field: string]: any;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The document value before the change. Absent for `created` events.
|
|
31
|
+
*/
|
|
32
|
+
oldValue?: {
|
|
33
|
+
[field: string]: any;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Field paths that changed (Firestore provides this only on `written`/`updated` events).
|
|
37
|
+
*/
|
|
38
|
+
updateMask?: string[];
|
|
39
|
+
/**
|
|
40
|
+
* The raw `data` field from the CloudEvent — verbatim.
|
|
41
|
+
*/
|
|
42
|
+
data: any;
|
|
43
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Pristine event payload for a parsed GCP Pub/Sub push-subscription delivery.
|
|
3
|
+
* Mirrors `SqsEventPayload` in shape: one payload per delivered message.
|
|
4
|
+
*/
|
|
5
|
+
export declare class PubSubEventPayload {
|
|
6
|
+
/**
|
|
7
|
+
* The Pub/Sub message ID assigned by GCP.
|
|
8
|
+
*/
|
|
9
|
+
messageId: string;
|
|
10
|
+
/**
|
|
11
|
+
* The decoded message body. Pub/Sub delivers `data` as a base64 string; this is the
|
|
12
|
+
* decoded UTF-8 form. Consumers needing the raw bytes can use `rawData`.
|
|
13
|
+
*/
|
|
14
|
+
body: string;
|
|
15
|
+
/**
|
|
16
|
+
* The raw base64-encoded `data` field exactly as Pub/Sub delivered it.
|
|
17
|
+
*/
|
|
18
|
+
rawData: string;
|
|
19
|
+
/**
|
|
20
|
+
* User-defined string attributes attached to the message.
|
|
21
|
+
*/
|
|
22
|
+
attributes: {
|
|
23
|
+
[key: string]: string;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* The subscription this delivery is for, e.g. `projects/my-proj/subscriptions/my-sub`.
|
|
27
|
+
*/
|
|
28
|
+
subscription: string;
|
|
29
|
+
/**
|
|
30
|
+
* The time the message was published to Pub/Sub.
|
|
31
|
+
*/
|
|
32
|
+
publishTime?: Date;
|
|
33
|
+
/**
|
|
34
|
+
* For ordered delivery — the ordering key chosen by the publisher.
|
|
35
|
+
*/
|
|
36
|
+
orderingKey?: string;
|
|
37
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed configuration keys for `@pristine-ts/gcp`. Use these constants with `@injectConfig`
|
|
3
|
+
* for autocomplete + rename safety, instead of typing the parameter name as a string.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import {injectConfig} from "@pristine-ts/common";
|
|
7
|
+
* import {GcpConfigurationKeys} from "@pristine-ts/gcp";
|
|
8
|
+
*
|
|
9
|
+
* constructor(@injectConfig(GcpConfigurationKeys.ProjectId) value: string) {}
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export declare const GcpConfigurationKeys: {
|
|
13
|
+
readonly ProjectId: "pristine.gcp.projectId";
|
|
14
|
+
readonly Region: "pristine.gcp.region";
|
|
15
|
+
readonly Credentials: "pristine.gcp.credentials";
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The expected runtime types for each configuration value defined by `@pristine-ts/gcp`.
|
|
19
|
+
* See `AwsConfigurationValueMap` in `@pristine-ts/aws` for the full pattern + caveats.
|
|
20
|
+
*/
|
|
21
|
+
export interface GcpConfigurationValueMap {
|
|
22
|
+
"pristine.gcp.projectId": string;
|
|
23
|
+
"pristine.gcp.region": string;
|
|
24
|
+
"pristine.gcp.credentials": string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Augments the global `PristineConfigurationValueMap` (defined in `@pristine-ts/common`)
|
|
28
|
+
* with this package's keys. The `@pristine-ts/eslint-plugin` rule
|
|
29
|
+
* `inject-config-type-match` reads the merged map to enforce parameter types on
|
|
30
|
+
* `@injectConfig` calls.
|
|
31
|
+
*/
|
|
32
|
+
declare module "@pristine-ts/common" {
|
|
33
|
+
interface PristineConfigurationValueMap extends GcpConfigurationValueMap {
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ModuleInterface } from "@pristine-ts/common";
|
|
2
|
+
export * from "./clients/clients";
|
|
3
|
+
export * from "./enums/enums";
|
|
4
|
+
export * from "./errors/errors";
|
|
5
|
+
export * from "./event-payloads/event-payloads";
|
|
6
|
+
export * from "./interfaces/interfaces";
|
|
7
|
+
export * from "./mappers/mappers";
|
|
8
|
+
export * from "./models/models";
|
|
9
|
+
export * from "./gcp.module.keyname";
|
|
10
|
+
export * from "./gcp.configuration-keys";
|
|
11
|
+
export declare const GcpModule: ModuleInterface;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GcpModuleKeyname: string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional per-call options shared across all GCP clients. Mirrors `ClientOptionsInterface`
|
|
3
|
+
* in `@pristine-ts/aws`.
|
|
4
|
+
*/
|
|
5
|
+
export interface GcpClientOptionsInterface {
|
|
6
|
+
/**
|
|
7
|
+
* The per-request timeout in milliseconds. Forwarded to the underlying SDK when
|
|
8
|
+
* supported.
|
|
9
|
+
*/
|
|
10
|
+
requestTimeout?: number;
|
|
11
|
+
/**
|
|
12
|
+
* The Pristine event id, threaded through for logging/tracing correlation.
|
|
13
|
+
*/
|
|
14
|
+
eventId?: string;
|
|
15
|
+
/**
|
|
16
|
+
* The Pristine event group id, threaded through for logging/tracing correlation.
|
|
17
|
+
*/
|
|
18
|
+
eventGroupId?: string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Storage } from "@google-cloud/storage";
|
|
2
|
+
import { Readable } from "stream";
|
|
3
|
+
import { CloudStoragePresignedOperationTypeEnum } from "../enums/cloud-storage-presigned-operation-type.enum";
|
|
4
|
+
import { GcpClientOptionsInterface } from "./client-options.interface";
|
|
5
|
+
export interface CloudStorageClientInterface {
|
|
6
|
+
getClient(): Storage;
|
|
7
|
+
get(bucketName: string, key: string, options?: Partial<GcpClientOptionsInterface>): Promise<Buffer>;
|
|
8
|
+
getObjectBodyAsArrayBuffer(bucketName: string, key: string, options?: Partial<GcpClientOptionsInterface>): Promise<ArrayBuffer>;
|
|
9
|
+
listKeys(bucketName: string, prefix?: string, options?: Partial<GcpClientOptionsInterface>): Promise<string[]>;
|
|
10
|
+
upload(bucketName: string, key: string, data: Buffer | string | Readable, contentType?: string, contentEncoding?: string, options?: Partial<GcpClientOptionsInterface>): Promise<void>;
|
|
11
|
+
download(bucketName: string, key: string, options?: Partial<GcpClientOptionsInterface>): Promise<Readable>;
|
|
12
|
+
deleteObject(bucketName: string, key: string, options?: Partial<GcpClientOptionsInterface>): Promise<void>;
|
|
13
|
+
createSignedUrl(bucketName: string, key: string, operation: CloudStoragePresignedOperationTypeEnum, expiresInSeconds?: number): Promise<string>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { EventarcMessageModel } from "../models/eventarc-message.model";
|
|
2
|
+
import { GcpClientOptionsInterface } from "./client-options.interface";
|
|
3
|
+
export interface EventarcClientInterface {
|
|
4
|
+
publish(events: EventarcMessageModel | EventarcMessageModel[], channel?: string, options?: Partial<GcpClientOptionsInterface>): Promise<void>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Firestore } from "@google-cloud/firestore";
|
|
2
|
+
/**
|
|
3
|
+
* Tag-injection contract for `FirestoreClient`. Inject by string token `"FirestoreClientInterface"`.
|
|
4
|
+
*/
|
|
5
|
+
export interface FirestoreClientInterface {
|
|
6
|
+
getClient(): Firestore;
|
|
7
|
+
get<T>(classType: {
|
|
8
|
+
new (): T;
|
|
9
|
+
}, id: string): Promise<T | undefined>;
|
|
10
|
+
list<T>(classType: {
|
|
11
|
+
new (): T;
|
|
12
|
+
}, options?: {
|
|
13
|
+
limit?: number;
|
|
14
|
+
startAfter?: any;
|
|
15
|
+
}): Promise<T[]>;
|
|
16
|
+
create<T>(item: T): Promise<T>;
|
|
17
|
+
update<T>(item: T): Promise<T>;
|
|
18
|
+
save<T>(item: T): Promise<T>;
|
|
19
|
+
delete<T>(classType: {
|
|
20
|
+
new (): T;
|
|
21
|
+
}, id: string): Promise<void>;
|
|
22
|
+
findBySecondaryIndex<T>(classType: {
|
|
23
|
+
new (): T;
|
|
24
|
+
}, field: string, value: any, options?: {
|
|
25
|
+
limit?: number;
|
|
26
|
+
}): Promise<T[]>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from "./client-options.interface";
|
|
2
|
+
export * from "./cloud-storage-client.interface";
|
|
3
|
+
export * from "./eventarc-client.interface";
|
|
4
|
+
export * from "./firestore-client.interface";
|
|
5
|
+
export * from "./pub-sub-client.interface";
|
|
6
|
+
export * from "./secret-manager-client.interface";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PubSub } from "@google-cloud/pubsub";
|
|
2
|
+
import { PubSubMessageModel } from "../models/pub-sub-message.model";
|
|
3
|
+
import { PubSubMessageSentConfirmationModel } from "../models/pub-sub-message-sent-confirmation.model";
|
|
4
|
+
import { GcpClientOptionsInterface } from "./client-options.interface";
|
|
5
|
+
export interface PubSubClientInterface {
|
|
6
|
+
getClient(): PubSub;
|
|
7
|
+
publish(topic: string, message: PubSubMessageModel, options?: Partial<GcpClientOptionsInterface>): Promise<PubSubMessageSentConfirmationModel>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SecretManagerServiceClient } from "@google-cloud/secret-manager";
|
|
2
|
+
import { GcpClientOptionsInterface } from "./client-options.interface";
|
|
3
|
+
export interface SecretManagerClientInterface {
|
|
4
|
+
getClient(): SecretManagerServiceClient;
|
|
5
|
+
getSecret(secretName: string, options?: Partial<GcpClientOptionsInterface>): Promise<{
|
|
6
|
+
[key: string]: string;
|
|
7
|
+
}>;
|
|
8
|
+
getSecretKey(secretName: string, key: string, options?: Partial<GcpClientOptionsInterface>): Promise<string>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { EventIdManager, EventMapperInterface, EventResponse, EventsExecutionOptionsInterface, ExecutionContextInterface } from "@pristine-ts/core";
|
|
2
|
+
import { CloudStorageEventPayload } from "../event-payloads/cloud-storage.event-payload";
|
|
3
|
+
/**
|
|
4
|
+
* Maps a GCP Cloud Storage CloudEvent into a Pristine `Event<CloudStorageEventPayload>`.
|
|
5
|
+
*
|
|
6
|
+
* The raw event can arrive in two shapes:
|
|
7
|
+
* 1. Structured CloudEvent (`{specversion, id, type, source, data, ...}`) — when an
|
|
8
|
+
* Eventarc trigger or Gen 2 Cloud Function delivers it via HTTP body.
|
|
9
|
+
* 2. Pre-parsed shape from the entry-point shim with the same fields at the top
|
|
10
|
+
* level. Both are supported.
|
|
11
|
+
*
|
|
12
|
+
* Detection: the CloudEvent `type` starts with `google.cloud.storage.object.v1.`.
|
|
13
|
+
*/
|
|
14
|
+
export declare class CloudStorageEventMapper implements EventMapperInterface<CloudStorageEventPayload, void> {
|
|
15
|
+
private readonly eventIdManager;
|
|
16
|
+
constructor(eventIdManager: EventIdManager);
|
|
17
|
+
supportsMapping(rawEvent: any, executionContext: ExecutionContextInterface<any>): boolean;
|
|
18
|
+
map(rawEvent: any, executionContext: ExecutionContextInterface<any>): EventsExecutionOptionsInterface<CloudStorageEventPayload>;
|
|
19
|
+
supportsReverseMapping(eventResponse: EventResponse<CloudStorageEventPayload, void>, response: any, executionContext: ExecutionContextInterface<any>): boolean;
|
|
20
|
+
reverseMap(eventResponse: EventResponse<CloudStorageEventPayload, void>, response: any, executionContext: ExecutionContextInterface<any>): void;
|
|
21
|
+
private findEnum;
|
|
22
|
+
}
|