@webda/gcp 4.0.0-beta.1 → 4.0.0-beta.3

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 (57) hide show
  1. package/README.md +54 -4
  2. package/lib/index.d.ts +5 -4
  3. package/lib/index.d.ts.map +1 -0
  4. package/lib/index.js +4 -4
  5. package/lib/index.js.map +1 -1
  6. package/lib/services/firestore.service.d.ts +236 -0
  7. package/lib/services/firestore.service.d.ts.map +1 -0
  8. package/lib/services/firestore.service.js +692 -0
  9. package/lib/services/firestore.service.js.map +1 -0
  10. package/lib/services/index.d.ts +2 -1
  11. package/lib/services/index.d.ts.map +1 -0
  12. package/lib/services/index.js +1 -1
  13. package/lib/services/index.js.map +1 -1
  14. package/lib/services/{kms.d.ts → kms.service.d.ts} +14 -14
  15. package/lib/services/kms.service.d.ts.map +1 -0
  16. package/lib/services/{kms.js → kms.service.js} +18 -16
  17. package/lib/services/kms.service.js.map +1 -0
  18. package/lib/services/{pubsub.d.ts → pubsub.service.d.ts} +23 -3
  19. package/lib/services/pubsub.service.d.ts.map +1 -0
  20. package/lib/services/{pubsub.js → pubsub.service.js} +36 -10
  21. package/lib/services/pubsub.service.js.map +1 -0
  22. package/lib/services/{queue.d.ts → queue.service.d.ts} +32 -14
  23. package/lib/services/queue.service.d.ts.map +1 -0
  24. package/lib/services/{queue.js → queue.service.js} +65 -38
  25. package/lib/services/queue.service.js.map +1 -0
  26. package/lib/services/storage.service.d.ts +268 -0
  27. package/lib/services/storage.service.d.ts.map +1 -0
  28. package/lib/services/{storage.js → storage.service.js} +125 -78
  29. package/lib/services/storage.service.js.map +1 -0
  30. package/package.json +34 -40
  31. package/webda.module.json +1120 -1462
  32. package/lib/index.spec.d.ts +0 -4
  33. package/lib/index.spec.js +0 -7
  34. package/lib/index.spec.js.map +0 -1
  35. package/lib/services/firestore.d.ts +0 -134
  36. package/lib/services/firestore.js +0 -424
  37. package/lib/services/firestore.js.map +0 -1
  38. package/lib/services/firestore.spec.d.ts +0 -1
  39. package/lib/services/firestore.spec.js +0 -194
  40. package/lib/services/firestore.spec.js.map +0 -1
  41. package/lib/services/kms.js.map +0 -1
  42. package/lib/services/kms.spec.d.ts +0 -1
  43. package/lib/services/kms.spec.js +0 -53
  44. package/lib/services/kms.spec.js.map +0 -1
  45. package/lib/services/pubsub.js.map +0 -1
  46. package/lib/services/pubsub.spec.d.ts +0 -1
  47. package/lib/services/pubsub.spec.js +0 -95
  48. package/lib/services/pubsub.spec.js.map +0 -1
  49. package/lib/services/queue.js.map +0 -1
  50. package/lib/services/queue.spec.d.ts +0 -1
  51. package/lib/services/queue.spec.js +0 -104
  52. package/lib/services/queue.spec.js.map +0 -1
  53. package/lib/services/storage.d.ts +0 -214
  54. package/lib/services/storage.js.map +0 -1
  55. package/lib/services/storage.spec.d.ts +0 -1
  56. package/lib/services/storage.spec.js +0 -220
  57. package/lib/services/storage.spec.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore.service.js","sourceRoot":"","sources":["../../src/services/firestore.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
- export * from "./storage.js";
1
+ export * from "./storage.service.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -1,2 +1,2 @@
1
- export * from "./storage.js";
1
+ export * from "./storage.service.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -1,5 +1,4 @@
1
- import { KeyManagementServiceClient } from "@google-cloud/kms";
2
- import { DeepPartial, Service, ServiceParameters } from "@webda/core";
1
+ import { Service, ServiceParameters } from "@webda/core";
3
2
  /**
4
3
  * Parameters for the KMS Service
5
4
  */
@@ -9,30 +8,31 @@ export declare class KMSServiceParameters extends ServiceParameters {
9
8
  * @default WEBDA_GCP_KMS_KEY env variable
10
9
  */
11
10
  defaultKey?: string;
12
- constructor(params: any);
11
+ /**
12
+ * @override
13
+ * @param params - the input parameters
14
+ * @returns this
15
+ */
16
+ load(params?: any): this;
13
17
  }
14
18
  /**
15
19
  * Expose KMS Service
16
20
  *
17
21
  * @WebdaModda GoogleCloudKMS
18
22
  */
19
- export declare class GCPKMSService<T extends KMSServiceParameters> extends Service<T> {
20
- client: KeyManagementServiceClient;
21
- /**
22
- * @override
23
- */
24
- loadParameters(params: DeepPartial<ServiceParameters>): ServiceParameters;
23
+ export declare class GCPKMSService<T extends KMSServiceParameters = KMSServiceParameters> extends Service<T> {
25
24
  /**
26
25
  * Encrypt a data with GCP KMS given key or defaultKey
27
- * @param data
28
- * @param key
29
- * @returns
26
+ * @param data - the data to encrypt
27
+ * @param key - the KMS key name, defaults to `defaultKey`
28
+ * @returns the encrypted data prefixed with the key information
30
29
  */
31
30
  encrypt(data: string, key?: string): Promise<string>;
32
31
  /**
33
32
  * Decrypt a data previously encrypted with this service
34
- * @param data
35
- * @returns
33
+ * @param data - the data returned by {@link encrypt}
34
+ * @returns the decrypted data
36
35
  */
37
36
  decrypt(data: string): Promise<string>;
38
37
  }
38
+ //# sourceMappingURL=kms.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kms.service.d.ts","sourceRoot":"","sources":["../../src/services/kms.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAgDxE;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,IAAI,CAAC,MAAM,GAAE,GAAQ,GAAG,IAAI,CAI3B;CACF;AAED;;;;GAIG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAClG;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnD;IAED;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAErC;CACF"}
@@ -26,10 +26,12 @@ const encrypter = {
26
26
  throw new Error("Invalid KMS encryption");
27
27
  }
28
28
  const client = new KeyManagementServiceClient();
29
- return (await client.decrypt({
29
+ const [result] = await client.decrypt({
30
30
  name: `projects/${infos[0]}/locations/${infos[1]}/keyRings/${infos[2]}/cryptoKeys/${infos[3]}`,
31
31
  ciphertext: Buffer.from(data.substring(data.indexOf(":") + 1), "base64")
32
- }))[0].plaintext;
32
+ });
33
+ // plaintext is a Uint8Array (or a string): always return a string
34
+ return Buffer.from(result.plaintext).toString();
33
35
  }
34
36
  };
35
37
  /**
@@ -40,9 +42,15 @@ CryptoService.registerEncrypter("gcp", encrypter);
40
42
  * Parameters for the KMS Service
41
43
  */
42
44
  export class KMSServiceParameters extends ServiceParameters {
43
- constructor(params) {
44
- super(params);
45
+ /**
46
+ * @override
47
+ * @param params - the input parameters
48
+ * @returns this
49
+ */
50
+ load(params = {}) {
51
+ super.load(params);
45
52
  this.defaultKey ?? (this.defaultKey = process.env.WEBDA_GCP_KMS_KEY);
53
+ return this;
46
54
  }
47
55
  }
48
56
  /**
@@ -51,28 +59,22 @@ export class KMSServiceParameters extends ServiceParameters {
51
59
  * @WebdaModda GoogleCloudKMS
52
60
  */
53
61
  export class GCPKMSService extends Service {
54
- /**
55
- * @override
56
- */
57
- loadParameters(params) {
58
- return new KMSServiceParameters(params);
59
- }
60
62
  /**
61
63
  * Encrypt a data with GCP KMS given key or defaultKey
62
- * @param data
63
- * @param key
64
- * @returns
64
+ * @param data - the data to encrypt
65
+ * @param key - the KMS key name, defaults to `defaultKey`
66
+ * @returns the encrypted data prefixed with the key information
65
67
  */
66
68
  encrypt(data, key) {
67
69
  return encrypter.encrypt(data, key || this.parameters.defaultKey);
68
70
  }
69
71
  /**
70
72
  * Decrypt a data previously encrypted with this service
71
- * @param data
72
- * @returns
73
+ * @param data - the data returned by {@link encrypt}
74
+ * @returns the decrypted data
73
75
  */
74
76
  decrypt(data) {
75
77
  return encrypter.decrypt(data);
76
78
  }
77
79
  }
78
- //# sourceMappingURL=kms.js.map
80
+ //# sourceMappingURL=kms.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kms.service.js","sourceRoot":"","sources":["../../src/services/kms.service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  import { CreateSubscriptionOptions, PubSub, Subscription } from "@google-cloud/pubsub";
2
- import { CancelablePromise, PubSubService, ServiceParameters } from "@webda/core";
2
+ import { PubSubService, ServiceParameters } from "@webda/core";
3
+ import { CancelablePromise } from "@webda/utils";
4
+ /**
5
+ * Configuration for {@link GCPPubSubService}
6
+ */
3
7
  export declare class GCPPubSubParameters extends ServiceParameters {
4
8
  /**
5
9
  * Topic to use on GCP
@@ -10,7 +14,7 @@ export declare class GCPPubSubParameters extends ServiceParameters {
10
14
  */
11
15
  subscriptionOptions?: CreateSubscriptionOptions;
12
16
  }
13
- /***
17
+ /**
14
18
  * Implement GCP Pub/Sub
15
19
  *
16
20
  * Can also act as queue
@@ -21,21 +25,37 @@ export default class GCPPubSubService<T = any, K extends GCPPubSubParameters = G
21
25
  pubsub: PubSub;
22
26
  /**
23
27
  * @override
28
+ * @returns this service
24
29
  */
25
30
  init(): Promise<this>;
31
+ /**
32
+ * Close the Pub/Sub client
33
+ * @override
34
+ */
35
+ stop(): Promise<void>;
26
36
  /**
27
37
  * @override
38
+ * @param event - the event to publish
28
39
  */
29
40
  sendMessage(event: T): Promise<void>;
41
+ /**
42
+ * The size is not available on a GCP subscription
43
+ * @returns 0
44
+ */
30
45
  size(): Promise<number>;
31
46
  /**
32
47
  * Get the subscription name
33
- * @returns
48
+ * @returns the subscription name, unique per machine
34
49
  */
35
50
  getSubscriptionName(): string;
36
51
  /**
37
52
  * @override
53
+ * @param callback - invoked with each event received
54
+ * @param eventPrototype - optional class to rehydrate JSON into
55
+ * @param onBind - invoked once the subscription is bound
56
+ * @returns a cancelable subscription handle
38
57
  */
39
58
  consume(callback: (event: T) => Promise<void>, eventPrototype?: new () => T, onBind?: (subscription: Subscription) => void): CancelablePromise<void>;
40
59
  }
41
60
  export { GCPPubSubService };
61
+ //# sourceMappingURL=pubsub.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pubsub.service.d.ts","sourceRoot":"","sources":["../../src/services/pubsub.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAW,MAAM,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAgB,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAa,MAAM,cAAc,CAAC;AAE5D;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;CACjD;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB,CACnC,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,CACnD,SAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1B;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAS1B;IAED;;;OAGG;IACG,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzC;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAE5B;IAED;;;OAGG;IACH,mBAAmB,IAAI,MAAM,CAE5B;IAED;;;;;;OAMG;IACH,OAAO,CACL,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACrC,cAAc,CAAC,EAAE,UAAU,CAAC,EAC5B,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,GAC5C,iBAAiB,CAAC,IAAI,CAAC,CAiDzB;CACF;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,8 +1,12 @@
1
1
  import { PubSub } from "@google-cloud/pubsub";
2
- import { CancelablePromise, Core, PubSubService, ServiceParameters } from "@webda/core";
2
+ import { getMachineId, PubSubService, ServiceParameters } from "@webda/core";
3
+ import { CancelablePromise, JSONUtils } from "@webda/utils";
4
+ /**
5
+ * Configuration for {@link GCPPubSubService}
6
+ */
3
7
  export class GCPPubSubParameters extends ServiceParameters {
4
8
  }
5
- /***
9
+ /**
6
10
  * Implement GCP Pub/Sub
7
11
  *
8
12
  * Can also act as queue
@@ -12,31 +16,55 @@ export class GCPPubSubParameters extends ServiceParameters {
12
16
  export default class GCPPubSubService extends PubSubService {
13
17
  /**
14
18
  * @override
19
+ * @returns this service
15
20
  */
16
21
  async init() {
17
22
  await super.init();
18
23
  this.pubsub = new PubSub();
19
24
  return this;
20
25
  }
26
+ /**
27
+ * Close the Pub/Sub client
28
+ * @override
29
+ */
30
+ async stop() {
31
+ if (this.pubsub) {
32
+ const pubsub = this.pubsub;
33
+ this.pubsub = undefined;
34
+ await pubsub.close().catch(() => {
35
+ /* already closed */
36
+ });
37
+ }
38
+ await super.stop();
39
+ }
21
40
  /**
22
41
  * @override
42
+ * @param event - the event to publish
23
43
  */
24
44
  async sendMessage(event) {
25
45
  this.metrics.messages_sent.inc();
26
- await this.pubsub.topic(this.parameters.topic).publishMessage({ data: Buffer.from(JSON.stringify(event)) });
46
+ await this.pubsub.topic(this.parameters.topic).publishMessage({ data: Buffer.from(JSONUtils.stringify(event)) });
27
47
  }
48
+ /**
49
+ * The size is not available on a GCP subscription
50
+ * @returns 0
51
+ */
28
52
  async size() {
29
53
  return 0;
30
54
  }
31
55
  /**
32
56
  * Get the subscription name
33
- * @returns
57
+ * @returns the subscription name, unique per machine
34
58
  */
35
59
  getSubscriptionName() {
36
- return `${this.getName()}-${Core.getMachineId()}`;
60
+ return `${this.getName()}-${getMachineId()}`;
37
61
  }
38
62
  /**
39
63
  * @override
64
+ * @param callback - invoked with each event received
65
+ * @param eventPrototype - optional class to rehydrate JSON into
66
+ * @param onBind - invoked once the subscription is bound
67
+ * @returns a cancelable subscription handle
40
68
  */
41
69
  consume(callback, eventPrototype, onBind) {
42
70
  const subscriptionName = this.getSubscriptionName();
@@ -70,12 +98,10 @@ export default class GCPPubSubService extends PubSubService {
70
98
  subscription.on("message", messageHandler);
71
99
  // Receive callbacks for errors on the subscription
72
100
  subscription.on("error", error => {
73
- console.error("Received error:", error);
101
+ this.log("ERROR", `${this.getName()} subscription error`, error);
74
102
  reject(error);
75
103
  });
76
- if (onBind) {
77
- onBind(subscription);
78
- }
104
+ onBind?.(subscription);
79
105
  }
80
106
  catch (err) {
81
107
  this.log("ERROR", `${this.getName()} consume error`, err);
@@ -90,4 +116,4 @@ export default class GCPPubSubService extends PubSubService {
90
116
  }
91
117
  }
92
118
  export { GCPPubSubService };
93
- //# sourceMappingURL=pubsub.js.map
119
+ //# sourceMappingURL=pubsub.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pubsub.service.js","sourceRoot":"","sources":["../../src/services/pubsub.service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Message, PubSub, Subscription } from "@google-cloud/pubsub";
2
- import { CancelablePromise, DeepPartial, MessageReceipt, Queue, QueueParameters } from "@webda/core";
2
+ import { MessageReceipt, Queue, QueueParameters } from "@webda/core";
3
+ import { CancelablePromise } from "@webda/utils";
3
4
  /**
4
5
  * GCPQueue Parameters
5
6
  */
@@ -23,8 +24,16 @@ export declare class GCPQueueParameters extends QueueParameters {
23
24
  /**
24
25
  * If receiver, the usage is to call receiveMessage and deleteMessage manually
25
26
  * If consumer, the usage is to call consume, the normal flow is used in parallel
27
+ *
28
+ * @default "consumer"
26
29
  */
27
- mode: "consumer" | "receiver";
30
+ mode?: "consumer" | "receiver";
31
+ /**
32
+ * @override
33
+ * @param params - the input parameters
34
+ * @returns this
35
+ */
36
+ load(params?: any): this;
28
37
  }
29
38
  /**
30
39
  * GCP Queue implementation on top of Pub/Sub
@@ -48,49 +57,58 @@ export default class GCPQueue<T = any, K extends GCPQueueParameters = GCPQueuePa
48
57
  private receiverPromise?;
49
58
  private receiverResolve?;
50
59
  /**
51
- *
60
+ * Messages received and not yet acknowledged, indexed by ackId
52
61
  */
53
62
  messages: {
54
63
  [key: string]: Message;
55
64
  };
56
65
  /**
57
66
  * @override
67
+ * @returns this service
58
68
  */
59
- loadParameters(params: DeepPartial<K>): GCPQueueParameters;
69
+ init(): Promise<this>;
60
70
  /**
71
+ * Close the subscription and the Pub/Sub client
61
72
  * @override
62
73
  */
63
- init(): Promise<this>;
74
+ stop(): Promise<void>;
64
75
  /**
65
76
  * The queue size is not available within this service
66
77
  *
67
- * @returns
78
+ * @returns 0
68
79
  */
69
- size(): Promise<0>;
80
+ size(): Promise<number>;
70
81
  /**
71
82
  * Acknowledge a message
72
- * @param id
83
+ * @param id - the ackId returned by {@link receiveMessage}
73
84
  */
74
85
  deleteMessage(id: string): Promise<void>;
75
86
  /**
76
87
  * Send a message to the queue
77
- * @param msg
88
+ * @param msg - the message to send
78
89
  */
79
90
  sendMessage(msg: T): Promise<void>;
91
+ /**
92
+ * Prepare the next receiver promise
93
+ * @returns the resolver of the current pending promise
94
+ */
95
+ private nextReceiver;
80
96
  /**
81
97
  * Retrieve just one message from the queue
82
- * @param proto
83
- * @returns
98
+ * @param proto - optional prototype to rehydrate the payload into
99
+ * @returns the received messages, empty if the timeout expired
84
100
  */
85
101
  receiveMessage<L>(proto?: new () => L): Promise<MessageReceipt<L>[]>;
86
102
  /**
87
103
  * Work a queue calling the callback with every Event received
88
- * If the callback is called without exception the `deleteMessage` is called
89
- * @param callback
90
- * @param eventPrototype
104
+ * If the callback is called without exception the message is acknowledged
105
+ * @param callback - invoked with each event received
106
+ * @param eventPrototype - optional class to rehydrate JSON into
107
+ * @returns a cancelable consumer handle
91
108
  */
92
109
  consume(callback: (event: T) => Promise<void>, eventPrototype?: {
93
110
  new (): T;
94
111
  }): CancelablePromise;
95
112
  }
96
113
  export { GCPQueue };
114
+ //# sourceMappingURL=queue.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.service.d.ts","sourceRoot":"","sources":["../../src/services/queue.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAa,MAAM,cAAc,CAAC;AAE5D;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,eAAe;IACrD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IAE/B;;;;OAIG;IACH,IAAI,CAAC,MAAM,GAAE,GAAQ,GAAG,IAAI,CAI3B;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3G;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAC,CAAiC;IACzD,OAAO,CAAC,eAAe,CAAC,CAAyC;IACjE;;OAEG;IACH,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAM;IAE1C;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1B;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB1B;IAED;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAE5B;IAED;;;OAGG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7C;IAED;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvC;IAED;;;OAGG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;OAIG;IACG,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAoDzE;IAED;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,iBAAiB,CAwBhG;CACF;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -1,16 +1,19 @@
1
1
  import { PubSub } from "@google-cloud/pubsub";
2
- import { CancelablePromise, Queue, QueueParameters } from "@webda/core";
2
+ import { Queue, QueueParameters } from "@webda/core";
3
+ import { CancelablePromise, JSONUtils } from "@webda/utils";
3
4
  /**
4
5
  * GCPQueue Parameters
5
6
  */
6
7
  export class GCPQueueParameters extends QueueParameters {
7
- constructor() {
8
- super(...arguments);
9
- /**
10
- * If receiver, the usage is to call receiveMessage and deleteMessage manually
11
- * If consumer, the usage is to call consume, the normal flow is used in parallel
12
- */
13
- this.mode = "consumer";
8
+ /**
9
+ * @override
10
+ * @param params - the input parameters
11
+ * @returns this
12
+ */
13
+ load(params = {}) {
14
+ super.load(params);
15
+ this.mode ?? (this.mode = "consumer");
16
+ return this;
14
17
  }
15
18
  }
16
19
  /**
@@ -22,35 +25,51 @@ export default class GCPQueue extends Queue {
22
25
  constructor() {
23
26
  super(...arguments);
24
27
  /**
25
- *
28
+ * Messages received and not yet acknowledged, indexed by ackId
26
29
  */
27
30
  this.messages = {};
28
31
  }
29
32
  /**
30
33
  * @override
31
- */
32
- loadParameters(params) {
33
- return new GCPQueueParameters(params);
34
- }
35
- /**
36
- * @override
34
+ * @returns this service
37
35
  */
38
36
  async init() {
39
37
  await super.init();
40
38
  this.pubsub = new PubSub();
41
39
  return this;
42
40
  }
41
+ /**
42
+ * Close the subscription and the Pub/Sub client
43
+ * @override
44
+ */
45
+ async stop() {
46
+ if (this.subscription) {
47
+ this.subscription.removeAllListeners();
48
+ await this.subscription.close().catch(() => {
49
+ /* already closed */
50
+ });
51
+ this.subscription = undefined;
52
+ }
53
+ if (this.pubsub) {
54
+ const pubsub = this.pubsub;
55
+ this.pubsub = undefined;
56
+ await pubsub.close().catch(() => {
57
+ /* already closed */
58
+ });
59
+ }
60
+ await super.stop();
61
+ }
43
62
  /**
44
63
  * The queue size is not available within this service
45
64
  *
46
- * @returns
65
+ * @returns 0
47
66
  */
48
67
  async size() {
49
68
  return 0;
50
69
  }
51
70
  /**
52
71
  * Acknowledge a message
53
- * @param id
72
+ * @param id - the ackId returned by {@link receiveMessage}
54
73
  */
55
74
  async deleteMessage(id) {
56
75
  await this.messages[id].ackWithResponse();
@@ -58,15 +77,27 @@ export default class GCPQueue extends Queue {
58
77
  }
59
78
  /**
60
79
  * Send a message to the queue
61
- * @param msg
80
+ * @param msg - the message to send
62
81
  */
63
82
  async sendMessage(msg) {
64
- await this.pubsub.topic(this.parameters.topic).publishMessage({ data: Buffer.from(JSON.stringify(msg)) });
83
+ this.metrics.messages_sent.inc();
84
+ await this.pubsub.topic(this.parameters.topic).publishMessage({ data: Buffer.from(JSONUtils.stringify(msg)) });
85
+ }
86
+ /**
87
+ * Prepare the next receiver promise
88
+ * @returns the resolver of the current pending promise
89
+ */
90
+ nextReceiver() {
91
+ const resolve = this.receiverResolve;
92
+ this.receiverPromise ?? (this.receiverPromise = new Promise(res => {
93
+ this.receiverResolve = res;
94
+ }));
95
+ return resolve;
65
96
  }
66
97
  /**
67
98
  * Retrieve just one message from the queue
68
- * @param proto
69
- * @returns
99
+ * @param proto - optional prototype to rehydrate the payload into
100
+ * @returns the received messages, empty if the timeout expired
70
101
  */
71
102
  async receiveMessage(proto) {
72
103
  let timeoutId;
@@ -79,19 +110,16 @@ export default class GCPQueue extends Queue {
79
110
  allowExcessMessages: false
80
111
  }
81
112
  }));
82
- this.receiverPromise ?? (this.receiverPromise = new Promise((resolve, _) => {
113
+ this.receiverPromise ?? (this.receiverPromise = new Promise(resolve => {
83
114
  this.receiverResolve = resolve;
84
115
  }));
85
- let result = this.receiverPromise;
116
+ const result = this.receiverPromise;
86
117
  this.receiverPromise = undefined;
87
118
  if (this.subscription.listenerCount("message") === 0) {
88
119
  const msgHandler = (message) => {
89
120
  this.messages[message.ackId] = message;
90
- const resolve = this.receiverResolve;
91
- this.receiverPromise ?? (this.receiverPromise = new Promise((res, _) => {
92
- this.receiverResolve = res;
93
- }));
94
- resolve([
121
+ this.metrics.messages_received.inc();
122
+ this.nextReceiver()([
95
123
  {
96
124
  Message: message.data.toString(),
97
125
  ReceiptHandle: message.ackId
@@ -105,11 +133,7 @@ export default class GCPQueue extends Queue {
105
133
  }
106
134
  if (this.parameters.timeout) {
107
135
  timeoutId = setTimeout(() => {
108
- const resolve = this.receiverResolve;
109
- this.receiverPromise ?? (this.receiverPromise = new Promise((res, _) => {
110
- this.receiverResolve = res;
111
- }));
112
- resolve([]);
136
+ this.nextReceiver()([]);
113
137
  }, this.parameters.timeout);
114
138
  }
115
139
  return result
@@ -130,9 +154,10 @@ export default class GCPQueue extends Queue {
130
154
  }
131
155
  /**
132
156
  * Work a queue calling the callback with every Event received
133
- * If the callback is called without exception the `deleteMessage` is called
134
- * @param callback
135
- * @param eventPrototype
157
+ * If the callback is called without exception the message is acknowledged
158
+ * @param callback - invoked with each event received
159
+ * @param eventPrototype - optional class to rehydrate JSON into
160
+ * @returns a cancelable consumer handle
136
161
  */
137
162
  consume(callback, eventPrototype) {
138
163
  this.subscription ?? (this.subscription = this.pubsub.subscription(this.parameters.subscription, {
@@ -141,20 +166,22 @@ export default class GCPQueue extends Queue {
141
166
  }
142
167
  }));
143
168
  const msgHandler = async (message) => {
169
+ this.metrics.messages_received.inc();
144
170
  try {
145
171
  await callback(this.unserialize(message.data.toString(), eventPrototype));
146
172
  await message.ackWithResponse();
147
173
  }
148
174
  catch (err) {
175
+ this.metrics.errors.inc();
149
176
  this.log("ERROR", `Message ${message.ackId}`, err);
150
177
  }
151
178
  };
152
179
  return new CancelablePromise(async () => {
153
180
  this.subscription.on("message", msgHandler);
154
181
  }, async () => {
155
- this.subscription.removeListener("message", msgHandler);
182
+ this.subscription?.removeListener("message", msgHandler);
156
183
  });
157
184
  }
158
185
  }
159
186
  export { GCPQueue };
160
- //# sourceMappingURL=queue.js.map
187
+ //# sourceMappingURL=queue.service.js.map