@webda/gcp 3.2.7 → 3.3.0

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.
@@ -0,0 +1,38 @@
1
+ import { KeyManagementServiceClient } from "@google-cloud/kms";
2
+ import { DeepPartial, Service, ServiceParameters } from "@webda/core";
3
+ /**
4
+ * Parameters for the KMS Service
5
+ */
6
+ export declare class KMSServiceParameters extends ServiceParameters {
7
+ /**
8
+ * Encryption key to use by default
9
+ * @default WEBDA_GCP_KMS_KEY env variable
10
+ */
11
+ defaultKey?: string;
12
+ constructor(params: any);
13
+ }
14
+ /**
15
+ * Expose KMS Service
16
+ *
17
+ * @WebdaModda GoogleCloudKMS
18
+ */
19
+ export declare class GCPKMSService<T extends KMSServiceParameters> extends Service<T> {
20
+ client: KeyManagementServiceClient;
21
+ /**
22
+ * @override
23
+ */
24
+ loadParameters(params: DeepPartial<ServiceParameters>): ServiceParameters;
25
+ /**
26
+ * Encrypt a data with GCP KMS given key or defaultKey
27
+ * @param data
28
+ * @param key
29
+ * @returns
30
+ */
31
+ encrypt(data: string, key?: string): Promise<string>;
32
+ /**
33
+ * Decrypt a data previously encrypted with this service
34
+ * @param data
35
+ * @returns
36
+ */
37
+ decrypt(data: string): Promise<string>;
38
+ }
@@ -0,0 +1,78 @@
1
+ import { KeyManagementServiceClient } from "@google-cloud/kms";
2
+ import { CryptoService, Service, ServiceParameters } from "@webda/core";
3
+ /**
4
+ * Encrypter for GCP KMS
5
+ */
6
+ const encrypter = {
7
+ encrypt: async (data, key) => {
8
+ key ?? (key = process.env.WEBDA_GCP_KMS_KEY);
9
+ // Only the odd elements are dynamic
10
+ const infos = key.split("/").filter((i, ind) => ind % 2 === 1);
11
+ const client = new KeyManagementServiceClient();
12
+ // Encode the infos in base64
13
+ // Add the encrypted info after a : separator
14
+ return (Buffer.from(infos.join(":")).toString("base64") +
15
+ ":" +
16
+ (await client.encrypt({
17
+ name: key,
18
+ plaintext: Buffer.from(data)
19
+ }))[0].ciphertext);
20
+ },
21
+ decrypt: async (data) => {
22
+ // Get the info
23
+ const info = data.substring(0, data.indexOf(":"));
24
+ const infos = Buffer.from(info, "base64").toString().split(":");
25
+ if (infos.length !== 4) {
26
+ throw new Error("Invalid KMS encryption");
27
+ }
28
+ const client = new KeyManagementServiceClient();
29
+ return (await client.decrypt({
30
+ name: `projects/${infos[0]}/locations/${infos[1]}/keyRings/${infos[2]}/cryptoKeys/${infos[3]}`,
31
+ ciphertext: Buffer.from(data.substring(data.indexOf(":") + 1))
32
+ }))[0].plaintext;
33
+ }
34
+ };
35
+ /**
36
+ * Register the encrypter
37
+ */
38
+ CryptoService.registerEncrypter("gcp", encrypter);
39
+ /**
40
+ * Parameters for the KMS Service
41
+ */
42
+ export class KMSServiceParameters extends ServiceParameters {
43
+ constructor(params) {
44
+ super(params);
45
+ this.defaultKey ?? (this.defaultKey = process.env.WEBDA_GCP_KMS_KEY);
46
+ }
47
+ }
48
+ /**
49
+ * Expose KMS Service
50
+ *
51
+ * @WebdaModda GoogleCloudKMS
52
+ */
53
+ export class GCPKMSService extends Service {
54
+ /**
55
+ * @override
56
+ */
57
+ loadParameters(params) {
58
+ return new KMSServiceParameters(params);
59
+ }
60
+ /**
61
+ * Encrypt a data with GCP KMS given key or defaultKey
62
+ * @param data
63
+ * @param key
64
+ * @returns
65
+ */
66
+ encrypt(data, key) {
67
+ return encrypter.encrypt(data, key || this.parameters.defaultKey);
68
+ }
69
+ /**
70
+ * Decrypt a data previously encrypted with this service
71
+ * @param data
72
+ * @returns
73
+ */
74
+ decrypt(data) {
75
+ return encrypter.decrypt(data);
76
+ }
77
+ }
78
+ //# sourceMappingURL=kms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kms.js","sourceRoot":"","sources":["../../src/services/kms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,53 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { KeyManagementServiceClient } from "@google-cloud/kms";
8
+ import { suite, test } from "@testdeck/mocha";
9
+ import { WebdaSimpleTest } from "@webda/core/lib/test.js";
10
+ import * as assert from "assert";
11
+ import * as sinon from "sinon";
12
+ import { GCPKMSService } from "./kms.js";
13
+ let KMSTest = class KMSTest extends WebdaSimpleTest {
14
+ async test() {
15
+ sinon.stub(KeyManagementServiceClient.prototype, "encrypt").callsFake(() => {
16
+ return [
17
+ {
18
+ ciphertext: "ciphertext"
19
+ }
20
+ ];
21
+ });
22
+ sinon.stub(KeyManagementServiceClient.prototype, "decrypt").callsFake(() => {
23
+ return [
24
+ {
25
+ plaintext: "plaintext"
26
+ }
27
+ ];
28
+ });
29
+ let service = await this.registerService(new GCPKMSService(this.webda, "KMSService", {
30
+ defaultKey: "projects/my-project/locations/us-east1/keyRings/my-key-ring/cryptoKeys/my-key"
31
+ }))
32
+ .resolve()
33
+ .init();
34
+ let encoded = await service.encrypt("test");
35
+ assert.deepStrictEqual(Buffer.from(encoded.split(":")[0], "base64").toString().split(":"), [
36
+ "my-project",
37
+ "us-east1",
38
+ "my-key-ring",
39
+ "my-key"
40
+ ]);
41
+ assert.strictEqual(encoded.split(":").pop(), "ciphertext");
42
+ let decoded = await service.decrypt(encoded);
43
+ assert.strictEqual(decoded, "plaintext");
44
+ assert.rejects(() => service.decrypt(Buffer.from("test:plop").toString("base64") + ":test"));
45
+ }
46
+ };
47
+ __decorate([
48
+ test
49
+ ], KMSTest.prototype, "test", null);
50
+ KMSTest = __decorate([
51
+ suite
52
+ ], KMSTest);
53
+ //# sourceMappingURL=kms.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kms.spec.js","sourceRoot":"","sources":["../../src/services/kms.spec.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,eAAe;IAE7B,AAAN,KAAK,CAAC,IAAI;QACR,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YACzE,OAAO;gBACL;oBACE,UAAU,EAAE,YAAY;iBACzB;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YACzE,OAAO;gBACL;oBACE,SAAS,EAAE,WAAW;iBACvB;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CACtC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE;YAC1C,UAAU,EAAE,+EAA+E;SAC5F,CAAC,CACH;aACE,OAAO,EAAE;aACT,IAAI,EAAE,CAAC;QACV,IAAI,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACzF,YAAY;YACZ,UAAU;YACV,aAAa;YACb,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;QAC3D,IAAI,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAC/F,CAAC;CACF,CAAA;AAlCO;IADL,IAAI;mCAkCJ;AAnCG,OAAO;IADZ,KAAK;GACA,OAAO,CAoCZ"}
@@ -27,6 +27,7 @@ export default class GCPPubSubService<T = any, K extends GCPPubSubParameters = G
27
27
  * @override
28
28
  */
29
29
  sendMessage(event: T): Promise<void>;
30
+ size(): Promise<number>;
30
31
  /**
31
32
  * @override
32
33
  */
@@ -22,8 +22,12 @@ export default class GCPPubSubService extends PubSubService {
22
22
  * @override
23
23
  */
24
24
  async sendMessage(event) {
25
+ this.metrics.messages_sent.inc();
25
26
  await this.pubsub.topic(this.parameters.topic).publishMessage({ data: Buffer.from(JSON.stringify(event)) });
26
27
  }
28
+ async size() {
29
+ return 0;
30
+ }
27
31
  /**
28
32
  * @override
29
33
  */
@@ -31,13 +35,19 @@ export default class GCPPubSubService extends PubSubService {
31
35
  const subscriptionName = `${this.getName()}-${this.getWebda().getUuid()}`;
32
36
  let subscription;
33
37
  const messageHandler = async (message) => {
38
+ this.metrics.messages_received.inc();
39
+ const end = this.metrics.processing_duration.startTimer();
34
40
  try {
35
41
  await callback(this.unserialize(message.data.toString(), eventPrototype));
36
42
  message.ack();
37
43
  }
38
44
  catch (err) {
45
+ this.metrics.errors.inc();
39
46
  this.log("ERROR", `${this.getName()} consume message error`, err);
40
47
  }
48
+ finally {
49
+ end();
50
+ }
41
51
  };
42
52
  return new CancelablePromise(async (_resolve, reject) => {
43
53
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/services/pubsub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/services/pubsub.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,8 @@ let GCPPubSubTest = class GCPPubSubTest extends WebdaTest {
28
28
  }));
29
29
  });
30
30
  await pubsub.sendMessage("plop");
31
+ // This is not logical w/o subscription value
32
+ assert.strictEqual(await pubsub.size(), 0);
31
33
  await WaitFor(async (resolve) => {
32
34
  if (counter === 2) {
33
35
  resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.spec.js","sourceRoot":"","sources":["../../src/services/pubsub.spec.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAqB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,SAAS;IAE7B,AAAN,KAAK,CAAC,KAAK;QACT,IAAI,MAAM,GAAqB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAmB,QAAQ,CAAC,CAAC;QACjF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,SAAS,GAAwB,EAAE,CAAC;QACxC,IAAI,YAAY,CAAC;QACjB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,SAAS,CAAC,IAAI,CACZ,MAAM,CAAC,OAAO,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;gBACzB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CACH,CAAC;YACF,SAAS,CAAC,IAAI,CACZ,MAAM,CAAC,OAAO,CACZ,KAAK,EAAC,GAAG,EAAC,EAAE;gBACV,OAAO,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC,EACD,SAAS,EACT,GAAG,CAAC,EAAE;gBACJ,YAAY,GAAG,GAAG,CAAC;gBACnB,OAAO,EAAE,CAAC;YACZ,CAAC,CACF,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,OAAO,CACX,KAAK,EAAC,OAAO,EAAC,EAAE;YACd,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBAClB,OAAO,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,EACD,EAAE,EACF,QAAQ,EACR,SAAS,EACT,eAAe,CAAC,IAAI,CAAC,CACtB,CAAC;QACF,yCAAyC;QACzC,MAAM,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QACxB,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAChD,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC9D,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5B,sDAAsD;QACtD,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YAClE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,gBAAgB;QAChB,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,EACJ,YAAY,CACb,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;CACF,CAAA;AA1DO;IADL,IAAI;0CA0DJ;AA3DG,aAAa;IADlB,KAAK;GACA,aAAa,CA4DlB"}
1
+ {"version":3,"file":"pubsub.spec.js","sourceRoot":"","sources":["../../src/services/pubsub.spec.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAqB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,SAAS;IAE7B,AAAN,KAAK,CAAC,KAAK;QACT,IAAI,MAAM,GAAqB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAmB,QAAQ,CAAC,CAAC;QACjF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,SAAS,GAAwB,EAAE,CAAC;QACxC,IAAI,YAAY,CAAC;QACjB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,SAAS,CAAC,IAAI,CACZ,MAAM,CAAC,OAAO,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;gBACzB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CACH,CAAC;YACF,SAAS,CAAC,IAAI,CACZ,MAAM,CAAC,OAAO,CACZ,KAAK,EAAC,GAAG,EAAC,EAAE;gBACV,OAAO,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC,EACD,SAAS,EACT,GAAG,CAAC,EAAE;gBACJ,YAAY,GAAG,GAAG,CAAC;gBACnB,OAAO,EAAE,CAAC;YACZ,CAAC,CACF,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,6CAA6C;QAC7C,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,OAAO,CACX,KAAK,EAAC,OAAO,EAAC,EAAE;YACd,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBAClB,OAAO,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,EACD,EAAE,EACF,QAAQ,EACR,SAAS,EACT,eAAe,CAAC,IAAI,CAAC,CACtB,CAAC;QACF,yCAAyC;QACzC,MAAM,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QACxB,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAChD,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC9D,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5B,sDAAsD;QACtD,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YAClE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,gBAAgB;QAChB,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,EACJ,YAAY,CACb,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;CACF,CAAA;AA5DO;IADL,IAAI;0CA4DJ;AA7DG,aAAa;IADlB,KAAK;GACA,aAAa,CA8DlB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webda/gcp",
3
- "version": "3.2.7",
3
+ "version": "3.3.0",
4
4
  "description": "Webda GCP Services implementation",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -33,9 +33,10 @@
33
33
  "homepage": "https://github.com/loopingz/webda.io#readme",
34
34
  "dependencies": {
35
35
  "@google-cloud/firestore": "^7.0.0",
36
+ "@google-cloud/kms": "^4.0.1",
36
37
  "@google-cloud/pubsub": "^4.0.1",
37
38
  "@google-cloud/storage": "~7.7.0",
38
- "@webda/core": "^3.11.1",
39
+ "@webda/core": "^3.12.0",
39
40
  "mime-types": "^2.1.35"
40
41
  },
41
42
  "c8": {
@@ -57,8 +58,8 @@
57
58
  "devDependencies": {
58
59
  "@testdeck/mocha": "^0.3.2",
59
60
  "@types/node": "18.11.13",
60
- "@webda/async": "^3.4.0",
61
- "@webda/shell": "^3.8.1",
61
+ "@webda/async": "^3.5.0",
62
+ "@webda/shell": "^3.9.0",
62
63
  "sinon": "^17.0.0",
63
64
  "uuid": "^9.0.0"
64
65
  },
@@ -72,5 +73,5 @@
72
73
  "@webda/shell"
73
74
  ]
74
75
  },
75
- "gitHead": "09059da4f9dff73d2ffef95a175bb847169dafcf"
76
+ "gitHead": "167f6b86b33867ef2ab10cc02624bc0441965632"
76
77
  }
package/webda.module.json CHANGED
@@ -3,6 +3,7 @@
3
3
  "deployers": {},
4
4
  "moddas": {
5
5
  "Webda/GoogleCloudFireStore": "lib/services/firestore:default",
6
+ "Webda/GoogleCloudKMS": "lib/services/kms:GCPKMSService",
6
7
  "Webda/GoogleCloudPubSub": "lib/services/pubsub:default",
7
8
  "Webda/GoogleCloudQueue": "lib/services/queue:default",
8
9
  "Webda/GoogleCloudStorage": "lib/services/storage:default"
@@ -115,6 +116,10 @@
115
116
  },
116
117
  "description": "Model Aliases to allow easier rename of Model"
117
118
  },
119
+ "noCache": {
120
+ "type": "boolean",
121
+ "description": "Disable default memory cache"
122
+ },
118
123
  "collection": {
119
124
  "type": "string",
120
125
  "description": "Collection to use"
@@ -202,6 +207,34 @@
202
207
  },
203
208
  "title": "FireStore"
204
209
  },
210
+ "Webda/GoogleCloudKMS": {
211
+ "type": "object",
212
+ "properties": {
213
+ "type": {
214
+ "type": "string",
215
+ "description": "Type of the service"
216
+ },
217
+ "url": {
218
+ "type": "string",
219
+ "description": "URL on which to serve the content"
220
+ },
221
+ "defaultKey": {
222
+ "type": "string",
223
+ "description": "Encryption key to use by default",
224
+ "default": "WEBDA_GCP_KMS_KEY env variable"
225
+ },
226
+ "openapi": {
227
+ "type": "object",
228
+ "additionalProperties": true
229
+ }
230
+ },
231
+ "required": [
232
+ "type"
233
+ ],
234
+ "description": "Parameters for the KMS Service",
235
+ "$schema": "http://json-schema.org/draft-07/schema#",
236
+ "title": "GCPKMSService"
237
+ },
205
238
  "Webda/GoogleCloudPubSub": {
206
239
  "type": "object",
207
240
  "properties": {
@@ -557,6 +590,13 @@
557
590
  }
558
591
  ],
559
592
  "description": "BigQueryConfig state"
593
+ },
594
+ "useTableSchema": {
595
+ "type": [
596
+ "boolean",
597
+ "null"
598
+ ],
599
+ "description": "BigQueryConfig useTableSchema"
560
600
  }
561
601
  },
562
602
  "description": "Properties of a BigQueryConfig."