@webda/gcp 4.0.0-beta.2 → 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.
- package/README.md +54 -4
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -4
- package/lib/index.js.map +1 -1
- package/lib/services/firestore.service.d.ts +236 -0
- package/lib/services/firestore.service.d.ts.map +1 -0
- package/lib/services/firestore.service.js +692 -0
- package/lib/services/firestore.service.js.map +1 -0
- package/lib/services/index.d.ts +1 -1
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/index.js +1 -1
- package/lib/services/index.js.map +1 -1
- package/lib/services/{kms.d.ts → kms.service.d.ts} +14 -15
- package/lib/services/kms.service.d.ts.map +1 -0
- package/lib/services/{kms.js → kms.service.js} +18 -16
- package/lib/services/kms.service.js.map +1 -0
- package/lib/services/{pubsub.d.ts → pubsub.service.d.ts} +23 -4
- package/lib/services/pubsub.service.d.ts.map +1 -0
- package/lib/services/{pubsub.js → pubsub.service.js} +36 -10
- package/lib/services/pubsub.service.js.map +1 -0
- package/lib/services/{queue.d.ts → queue.service.d.ts} +32 -16
- package/lib/services/queue.service.d.ts.map +1 -0
- package/lib/services/{queue.js → queue.service.js} +63 -32
- package/lib/services/queue.service.js.map +1 -0
- package/lib/services/storage.service.d.ts +268 -0
- package/lib/services/storage.service.d.ts.map +1 -0
- package/lib/services/{storage.js → storage.service.js} +116 -69
- package/lib/services/storage.service.js.map +1 -0
- package/package.json +33 -43
- package/webda.module.json +1122 -1440
- package/lib/index.spec.d.ts +0 -5
- package/lib/index.spec.d.ts.map +0 -1
- package/lib/index.spec.js +0 -7
- package/lib/index.spec.js.map +0 -1
- package/lib/services/firestore.d.ts +0 -135
- package/lib/services/firestore.d.ts.map +0 -1
- package/lib/services/firestore.js +0 -423
- package/lib/services/firestore.js.map +0 -1
- package/lib/services/firestore.spec.d.ts +0 -2
- package/lib/services/firestore.spec.d.ts.map +0 -1
- package/lib/services/firestore.spec.js +0 -187
- package/lib/services/firestore.spec.js.map +0 -1
- package/lib/services/kms.d.ts.map +0 -1
- package/lib/services/kms.js.map +0 -1
- package/lib/services/kms.spec.d.ts +0 -2
- package/lib/services/kms.spec.d.ts.map +0 -1
- package/lib/services/kms.spec.js +0 -53
- package/lib/services/kms.spec.js.map +0 -1
- package/lib/services/pubsub.d.ts.map +0 -1
- package/lib/services/pubsub.js.map +0 -1
- package/lib/services/pubsub.spec.d.ts +0 -2
- package/lib/services/pubsub.spec.d.ts.map +0 -1
- package/lib/services/pubsub.spec.js +0 -95
- package/lib/services/pubsub.spec.js.map +0 -1
- package/lib/services/queue.d.ts.map +0 -1
- package/lib/services/queue.js.map +0 -1
- package/lib/services/queue.spec.d.ts +0 -2
- package/lib/services/queue.spec.d.ts.map +0 -1
- package/lib/services/queue.spec.js +0 -117
- package/lib/services/queue.spec.js.map +0 -1
- package/lib/services/storage.d.ts +0 -215
- package/lib/services/storage.d.ts.map +0 -1
- package/lib/services/storage.js.map +0 -1
- package/lib/services/storage.spec.d.ts +0 -2
- package/lib/services/storage.spec.d.ts.map +0 -1
- package/lib/services/storage.spec.js +0 -224
- package/lib/services/storage.spec.js.map +0 -1
|
@@ -1,187 +0,0 @@
|
|
|
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 { Firestore } from "@google-cloud/firestore";
|
|
8
|
-
import { suite, test } from "@testdeck/mocha";
|
|
9
|
-
import { StoreTest } from "@webda/core/lib/stores/store.spec.js";
|
|
10
|
-
import * as assert from "assert";
|
|
11
|
-
import * as sinon from "sinon";
|
|
12
|
-
import { randomUUID } from "crypto";
|
|
13
|
-
import { FireStore } from "./firestore.js";
|
|
14
|
-
import * as WebdaQL from "@webda/ql";
|
|
15
|
-
let FireStoreTest = class FireStoreTest extends StoreTest {
|
|
16
|
-
async before() {
|
|
17
|
-
this.unitUuid = randomUUID();
|
|
18
|
-
this.firestore = new Firestore();
|
|
19
|
-
await super.before();
|
|
20
|
-
}
|
|
21
|
-
async getIdentStore() {
|
|
22
|
-
return this.addService(FireStore, {
|
|
23
|
-
collection: `idents-${this.webda.getUuid()}`,
|
|
24
|
-
model: "Webda/Ident"
|
|
25
|
-
}, "Idents");
|
|
26
|
-
}
|
|
27
|
-
async getUserStore() {
|
|
28
|
-
return this.addService(FireStore, {
|
|
29
|
-
collection: `users-${this.webda.getUuid()}`,
|
|
30
|
-
model: "Webda/User"
|
|
31
|
-
}, "Users");
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Delete a full collection
|
|
35
|
-
*/
|
|
36
|
-
async deleteCollection(collectionPath, batchSize) {
|
|
37
|
-
const collectionRef = this.firestore.collection(collectionPath);
|
|
38
|
-
const query = collectionRef.orderBy("__name__").limit(batchSize);
|
|
39
|
-
return new Promise((resolve, reject) => {
|
|
40
|
-
this.deleteQueryBatch(this.firestore, query, resolve).catch(reject);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
async cleanCollection() {
|
|
44
|
-
const collections = await this.firestore.listCollections();
|
|
45
|
-
await Promise.all(collections.map(c => {
|
|
46
|
-
return this.deleteCollection(c.id, 500);
|
|
47
|
-
}));
|
|
48
|
-
}
|
|
49
|
-
async fillForQuery() {
|
|
50
|
-
// Create a new store
|
|
51
|
-
const store = await this.addService(FireStore, {
|
|
52
|
-
collection: "webda-query",
|
|
53
|
-
compoundIndexes: [{ state: "asc", "team.id": "asc" }]
|
|
54
|
-
}, "queryStore");
|
|
55
|
-
const res = await this.firestore.collection("webda-query").where("order", "==", 1).get();
|
|
56
|
-
if (!res.docs.length) {
|
|
57
|
-
console.log("Init the query collection");
|
|
58
|
-
await Promise.all(this.getQueryDocuments().map(d => store.save(d)));
|
|
59
|
-
}
|
|
60
|
-
return store;
|
|
61
|
-
}
|
|
62
|
-
async query() {
|
|
63
|
-
const store = await super.query();
|
|
64
|
-
let exp = new WebdaQL.QueryValidator('state = "CA" AND role = 4').getExpression();
|
|
65
|
-
let res = await store.find({ filter: exp, limit: 1000 });
|
|
66
|
-
assert.strictEqual(res.filter, true, `Should not have any post filter ${res.filter.toString()}`);
|
|
67
|
-
assert.strictEqual(res.results.length, 50);
|
|
68
|
-
exp = new WebdaQL.QueryValidator('state = "CA" AND team.id < 5').getExpression();
|
|
69
|
-
res = await store.find({ filter: exp, limit: 1000 });
|
|
70
|
-
assert.strictEqual(res.filter, true, `Should not have post filter ${res.filter.toString()}`);
|
|
71
|
-
assert.strictEqual(res.results.length, 100);
|
|
72
|
-
exp = new WebdaQL.QueryValidator('state = "CA" AND team.id < 5 AND role >= 4').getExpression();
|
|
73
|
-
res = await store.find({ filter: exp, limit: 1000 });
|
|
74
|
-
assert.notStrictEqual(res.filter, true, `Should have post filter ${res.filter.toString()}`);
|
|
75
|
-
assert.strictEqual(res.results.length, 100);
|
|
76
|
-
assert.strictEqual(res.results.filter(c => res.filter.eval(c)).length, 50);
|
|
77
|
-
exp = new WebdaQL.QueryValidator('state = "CA" AND role <= 4').getExpression();
|
|
78
|
-
res = await store.find({ filter: exp, limit: 1000 });
|
|
79
|
-
assert.notStrictEqual(res.filter, true, "Should have post filter");
|
|
80
|
-
assert.strictEqual(res.results.length, 250);
|
|
81
|
-
const items = ["CA", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
|
|
82
|
-
res = await store.find({
|
|
83
|
-
filter: new WebdaQL.QueryValidator(`state IN [${items.map(i => `"${i}"`).join(",")}]`).getExpression(),
|
|
84
|
-
limit: 1000
|
|
85
|
-
});
|
|
86
|
-
// Should be post filtered
|
|
87
|
-
assert.strictEqual(res.results.length, 1000);
|
|
88
|
-
res = await store.find({
|
|
89
|
-
filter: new WebdaQL.QueryValidator(`state IN ["CA", "OR"] AND team.id IN [4,8]`).getExpression(),
|
|
90
|
-
limit: 1000
|
|
91
|
-
});
|
|
92
|
-
assert.strictEqual(res.results.length, 500);
|
|
93
|
-
res = await store.find({
|
|
94
|
-
filter: new WebdaQL.QueryValidator(`team.id < 5 AND state > "CA"`).getExpression(),
|
|
95
|
-
limit: 1000
|
|
96
|
-
});
|
|
97
|
-
assert.strictEqual(res.results.length, 250);
|
|
98
|
-
// Test double CONTAINS
|
|
99
|
-
exp = new WebdaQL.QueryValidator('states CONTAINS "CA" AND states CONTAINS "OR"').getExpression();
|
|
100
|
-
res = await store.find({ filter: exp, limit: 1000 });
|
|
101
|
-
assert.notStrictEqual(res.filter, true, `Should have post filter as CONTAINS cannot be used twice`);
|
|
102
|
-
return store;
|
|
103
|
-
}
|
|
104
|
-
async queryOrder() {
|
|
105
|
-
// Disable default ordering query as it is not possible with Dynamo
|
|
106
|
-
const store = await this.fillForQuery();
|
|
107
|
-
let res = await store.query("order > 900 ORDER BY order DESC LIMIT 10");
|
|
108
|
-
assert.strictEqual(res.results.shift().order, 999);
|
|
109
|
-
res = await store.query("ORDER BY order ASC LIMIT 10");
|
|
110
|
-
assert.strictEqual(res.results.shift().order, 0);
|
|
111
|
-
res = await store.query("ORDER BY order DESC LIMIT 10");
|
|
112
|
-
assert.strictEqual(res.results.shift().order, 999);
|
|
113
|
-
res = await store.query("ORDER BY state ASC, team.id ASC LIMIT 10");
|
|
114
|
-
res.results
|
|
115
|
-
.map(c => this.mapQueryModel(c))
|
|
116
|
-
.forEach(c => {
|
|
117
|
-
assert.deepStrictEqual({ teamId: 0, state: "CA" }, { teamId: c.teamId, state: c.state });
|
|
118
|
-
});
|
|
119
|
-
// It should not fail even if index is not found
|
|
120
|
-
res = await store.query("ORDER BY state ASC, team.id DESC LIMIT 10");
|
|
121
|
-
res = await store.query("order > 900 ORDER BY team.id ASC LIMIT 10");
|
|
122
|
-
res = await store.query("ORDER BY team.id ASC, order DESC LIMIT 10");
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Query batch
|
|
126
|
-
*
|
|
127
|
-
* Code from Google Documentation
|
|
128
|
-
*
|
|
129
|
-
*/
|
|
130
|
-
async deleteQueryBatch(db, query, resolve) {
|
|
131
|
-
const snapshot = await query.get();
|
|
132
|
-
const batchSize = snapshot.size;
|
|
133
|
-
if (batchSize === 0) {
|
|
134
|
-
// When there are no documents left, we are done
|
|
135
|
-
resolve();
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
// Delete documents in a batch
|
|
139
|
-
const batch = db.batch();
|
|
140
|
-
snapshot.docs.forEach(doc => {
|
|
141
|
-
batch.delete(doc.ref);
|
|
142
|
-
});
|
|
143
|
-
await batch.commit();
|
|
144
|
-
// Recurse on the next process tick, to avoid
|
|
145
|
-
// exploding the stack.
|
|
146
|
-
process.nextTick(() => {
|
|
147
|
-
this.deleteQueryBatch(db, query, resolve);
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
async after() {
|
|
151
|
-
await this.deleteCollection(`idents_${this.unitUuid}`, 10000);
|
|
152
|
-
await this.deleteCollection(`users_${this.unitUuid}`, 10000);
|
|
153
|
-
}
|
|
154
|
-
async deleteCondition() {
|
|
155
|
-
const idents = this.identStore;
|
|
156
|
-
const obj = await idents.save({
|
|
157
|
-
plop: 3
|
|
158
|
-
});
|
|
159
|
-
await assert.rejects(() => idents._delete(obj.getUuid(), 2, "plop"), /UpdateCondition not met/);
|
|
160
|
-
await idents._delete(obj.getUuid(), 3, "plop");
|
|
161
|
-
}
|
|
162
|
-
async cov() {
|
|
163
|
-
const store = this.identStore;
|
|
164
|
-
await assert.rejects(() => store.upsertItemToCollection("inexisting", "plop", {}, 0), /Item not found inexisting/);
|
|
165
|
-
sinon.stub(store, "getDocumentRef").callsFake(() => {
|
|
166
|
-
throw new Error("FAKE");
|
|
167
|
-
});
|
|
168
|
-
await assert.rejects(() => store.upsertItemToCollection("inexisting", "plop", {}), /FAKE/);
|
|
169
|
-
await assert.rejects(() => store.incrementAttribute("inexisting", "plop", 1), /FAKE/);
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
__decorate([
|
|
173
|
-
test
|
|
174
|
-
], FireStoreTest.prototype, "query", null);
|
|
175
|
-
__decorate([
|
|
176
|
-
test
|
|
177
|
-
], FireStoreTest.prototype, "queryOrder", null);
|
|
178
|
-
__decorate([
|
|
179
|
-
test
|
|
180
|
-
], FireStoreTest.prototype, "deleteCondition", null);
|
|
181
|
-
__decorate([
|
|
182
|
-
test
|
|
183
|
-
], FireStoreTest.prototype, "cov", null);
|
|
184
|
-
FireStoreTest = __decorate([
|
|
185
|
-
suite
|
|
186
|
-
], FireStoreTest);
|
|
187
|
-
//# sourceMappingURL=firestore.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"firestore.spec.js","sourceRoot":"","sources":["../../src/services/firestore.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kms.d.ts","sourceRoot":"","sources":["../../src/services/kms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAiB,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAgDrF;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;gBACR,MAAM,EAAE,GAAG;CAIxB;AAED;;;;GAIG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,oBAAoB,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAC3E,MAAM,EAAE,0BAA0B,CAAC;IAEnC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,iBAAiB;IAIzE;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpD;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGvC"}
|
package/lib/services/kms.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kms.js","sourceRoot":"","sources":["../../src/services/kms.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kms.spec.d.ts","sourceRoot":"","sources":["../../src/services/kms.spec.ts"],"names":[],"mappings":""}
|
package/lib/services/kms.spec.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
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
|
-
const 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
|
-
const 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(), "Y2lwaGVydGV4dA==");
|
|
42
|
-
const 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
|
|
@@ -1 +0,0 @@
|
|
|
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,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CACxC,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,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,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,kBAAkB,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../../src/services/pubsub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAW,MAAM,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAQ,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAExF,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;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpC,IAAI;IAIV;;;OAGG;IACH,mBAAmB,IAAI,MAAM;IAG7B;;OAEG;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;CAoD3B;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/services/pubsub.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pubsub.spec.d.ts","sourceRoot":"","sources":["../../src/services/pubsub.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,95 +0,0 @@
|
|
|
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 { PubSub } from "@google-cloud/pubsub";
|
|
8
|
-
import { suite, test } from "@testdeck/mocha";
|
|
9
|
-
import { Core, WaitFor, WaitLinearDelay } from "@webda/core";
|
|
10
|
-
import { WebdaTest } from "@webda/core/lib/test.js";
|
|
11
|
-
import * as assert from "assert";
|
|
12
|
-
import * as sinon from "sinon";
|
|
13
|
-
let GCPPubSubTest = class GCPPubSubTest extends WebdaTest {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(...arguments);
|
|
16
|
-
this.subscriptions = [];
|
|
17
|
-
}
|
|
18
|
-
async before() {
|
|
19
|
-
const pubsub = new PubSub();
|
|
20
|
-
const [exists] = await pubsub.topic("unit-tests").exists();
|
|
21
|
-
if (!exists) {
|
|
22
|
-
await pubsub.createTopic("unit-tests");
|
|
23
|
-
}
|
|
24
|
-
await super.before();
|
|
25
|
-
}
|
|
26
|
-
async after() {
|
|
27
|
-
await super.after();
|
|
28
|
-
const pubsub = new PubSub();
|
|
29
|
-
for (const subscription of this.subscriptions) {
|
|
30
|
-
try {
|
|
31
|
-
const [exists] = await pubsub.subscription(subscription).exists();
|
|
32
|
-
if (exists) {
|
|
33
|
-
await pubsub.subscription(subscription).delete();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
catch (err) { }
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
async basic() {
|
|
40
|
-
const pubsub = this.webda.getService("pubsub");
|
|
41
|
-
let subscriptionCount = 1;
|
|
42
|
-
assert.strictEqual(pubsub.getSubscriptionName(), `${pubsub.getName()}-${Core.getMachineId()}`);
|
|
43
|
-
sinon.stub(pubsub, "getSubscriptionName").callsFake(() => {
|
|
44
|
-
const name = `test-${Core.getMachineId()}-${subscriptionCount++}`;
|
|
45
|
-
this.subscriptions.push(name);
|
|
46
|
-
return name;
|
|
47
|
-
});
|
|
48
|
-
let counter = 0;
|
|
49
|
-
const consumers = [];
|
|
50
|
-
let subscription;
|
|
51
|
-
await new Promise((resolve, reject) => {
|
|
52
|
-
consumers.push(pubsub.consume(async (evt) => {
|
|
53
|
-
counter++;
|
|
54
|
-
}));
|
|
55
|
-
consumers.push(pubsub.consume(async (evt) => {
|
|
56
|
-
counter++;
|
|
57
|
-
throw new Error("Should not fail");
|
|
58
|
-
}, undefined, sub => {
|
|
59
|
-
subscription = sub;
|
|
60
|
-
resolve();
|
|
61
|
-
}));
|
|
62
|
-
});
|
|
63
|
-
await pubsub.sendMessage("plop");
|
|
64
|
-
// This is not logical w/o subscription value
|
|
65
|
-
assert.strictEqual(await pubsub.size(), 0);
|
|
66
|
-
await WaitFor(async (resolve) => {
|
|
67
|
-
if (counter === 2) {
|
|
68
|
-
resolve();
|
|
69
|
-
return true;
|
|
70
|
-
}
|
|
71
|
-
return false;
|
|
72
|
-
}, 10, "Events", undefined, WaitLinearDelay(1000));
|
|
73
|
-
// We might have concurrence in unit test
|
|
74
|
-
assert.ok(counter >= 2);
|
|
75
|
-
subscription.emit("error", "Fake server error");
|
|
76
|
-
await assert.rejects(() => consumers[1], /Fake server error/);
|
|
77
|
-
await consumers[0].cancel();
|
|
78
|
-
// Hack our way to test exception within the main loop
|
|
79
|
-
const stub = sinon.stub(pubsub.pubsub, "subscription").callsFake(() => {
|
|
80
|
-
throw new Error("Bad code?");
|
|
81
|
-
});
|
|
82
|
-
// Should reject
|
|
83
|
-
await assert.rejects(() => pubsub.consume(async (evt) => {
|
|
84
|
-
counter++;
|
|
85
|
-
}), /Bad code\?/);
|
|
86
|
-
stub.restore();
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
__decorate([
|
|
90
|
-
test
|
|
91
|
-
], GCPPubSubTest.prototype, "basic", null);
|
|
92
|
-
GCPPubSubTest = __decorate([
|
|
93
|
-
suite
|
|
94
|
-
], GCPPubSubTest);
|
|
95
|
-
//# sourceMappingURL=pubsub.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pubsub.spec.js","sourceRoot":"","sources":["../../src/services/pubsub.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/services/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErG;;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;;;OAGG;IACH,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;gBAElB,MAAM,EAAE,WAAW,CAAC,kBAAkB,CAAC;CAIpD;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;IAC1C;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,kBAAkB;IAI1D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;IAIxB;;;OAGG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM;IAK9B;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,CAAC;IAIxB;;;;OAIG;IACG,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IA8D1E;;;;;OAKG;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;CAuBlG;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/services/queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queue.spec.d.ts","sourceRoot":"","sources":["../../src/services/queue.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,117 +0,0 @@
|
|
|
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 { suite, test } from "@testdeck/mocha";
|
|
8
|
-
import { QueueTest } from "@webda/core/lib/queues/queue.spec.js";
|
|
9
|
-
import * as assert from "assert";
|
|
10
|
-
import { EventEmitter } from "events";
|
|
11
|
-
import GCPQueue from "./queue.js";
|
|
12
|
-
import { PubSub } from "@google-cloud/pubsub";
|
|
13
|
-
class FakeSubscription extends EventEmitter {
|
|
14
|
-
emitError() {
|
|
15
|
-
this.emit("error", "Fake error");
|
|
16
|
-
}
|
|
17
|
-
close() { }
|
|
18
|
-
}
|
|
19
|
-
let GCPQueueTest = class GCPQueueTest extends QueueTest {
|
|
20
|
-
async before() {
|
|
21
|
-
const pubsub = new PubSub();
|
|
22
|
-
const [exists] = await pubsub.topic("unit-tests").exists();
|
|
23
|
-
if (!exists) {
|
|
24
|
-
await pubsub.createTopic("unit-tests");
|
|
25
|
-
}
|
|
26
|
-
await super.before();
|
|
27
|
-
}
|
|
28
|
-
async basic() {
|
|
29
|
-
const queue = await this.addService(GCPQueue, {
|
|
30
|
-
subscription: `queue_${this.webda.getUuid()}`,
|
|
31
|
-
mode: "receiver",
|
|
32
|
-
topic: "unit-tests",
|
|
33
|
-
timeout: 30000
|
|
34
|
-
});
|
|
35
|
-
await queue.pubsub.createSubscription(queue.getParameters().topic, queue.getParameters().subscription, {
|
|
36
|
-
ackDeadlineSeconds: 10,
|
|
37
|
-
enableExactlyOnceDelivery: true
|
|
38
|
-
});
|
|
39
|
-
try {
|
|
40
|
-
await this.simple(queue, true, 12000);
|
|
41
|
-
this.log("DEBUG", "Verify receiveMessage is now empty");
|
|
42
|
-
queue.getParameters().timeout = 1000;
|
|
43
|
-
const msgs = await queue.receiveMessage();
|
|
44
|
-
assert.strictEqual(msgs.length, 0);
|
|
45
|
-
}
|
|
46
|
-
finally {
|
|
47
|
-
console.log("INFO", "Deleting subscription");
|
|
48
|
-
try {
|
|
49
|
-
await queue.pubsub.subscription(queue.getParameters().subscription).delete();
|
|
50
|
-
}
|
|
51
|
-
catch (err) {
|
|
52
|
-
console.error("Error deleting subscription", err);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
async consumers() {
|
|
57
|
-
const queue = await this.addService(GCPQueue, {
|
|
58
|
-
subscription: `queue_${this.webda.getUuid()}`,
|
|
59
|
-
mode: "receiver",
|
|
60
|
-
topic: "unit-tests",
|
|
61
|
-
timeout: 30000
|
|
62
|
-
});
|
|
63
|
-
await queue.pubsub.createSubscription(queue.getParameters().topic, queue.getParameters().subscription, {
|
|
64
|
-
ackDeadlineSeconds: 10,
|
|
65
|
-
enableMessageOrdering: true
|
|
66
|
-
});
|
|
67
|
-
try {
|
|
68
|
-
// Test consumer
|
|
69
|
-
let msg;
|
|
70
|
-
let consumed = 0;
|
|
71
|
-
const consumer = queue.consume(async (dt) => {
|
|
72
|
-
consumed++;
|
|
73
|
-
if (msg) {
|
|
74
|
-
throw new Error();
|
|
75
|
-
}
|
|
76
|
-
msg = dt;
|
|
77
|
-
});
|
|
78
|
-
await this.sleep(1000);
|
|
79
|
-
this.log("DEBUG", "Consume sendMessage");
|
|
80
|
-
await queue.sendMessage({ plop: 1 });
|
|
81
|
-
this.log("DEBUG", "Consume cancel");
|
|
82
|
-
await queue.sendMessage({ plop: 2 });
|
|
83
|
-
// Need to wait before cancel to ensure message are received
|
|
84
|
-
while (consumed < 2) {
|
|
85
|
-
await this.sleep(500);
|
|
86
|
-
}
|
|
87
|
-
await consumer.cancel();
|
|
88
|
-
this.log("DEBUG", "Consume assert");
|
|
89
|
-
assert.notStrictEqual(msg, undefined);
|
|
90
|
-
}
|
|
91
|
-
finally {
|
|
92
|
-
await queue.pubsub.subscription(queue.getParameters().subscription).delete();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
async receiveError() {
|
|
96
|
-
const queue = await this.addService(GCPQueue, {
|
|
97
|
-
subscription: `queue_${this.webda.getUuid()}`,
|
|
98
|
-
mode: "consumer",
|
|
99
|
-
topic: "unit-tests",
|
|
100
|
-
timeout: 30000
|
|
101
|
-
});
|
|
102
|
-
await assert.rejects(() => queue.receiveMessage(), /You can only use receiveMessage in 'receiver' mode/);
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
__decorate([
|
|
106
|
-
test
|
|
107
|
-
], GCPQueueTest.prototype, "basic", null);
|
|
108
|
-
__decorate([
|
|
109
|
-
test
|
|
110
|
-
], GCPQueueTest.prototype, "consumers", null);
|
|
111
|
-
__decorate([
|
|
112
|
-
test
|
|
113
|
-
], GCPQueueTest.prototype, "receiveError", null);
|
|
114
|
-
GCPQueueTest = __decorate([
|
|
115
|
-
suite
|
|
116
|
-
], GCPQueueTest);
|
|
117
|
-
//# sourceMappingURL=queue.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queue.spec.js","sourceRoot":"","sources":["../../src/services/queue.spec.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,QAAQ,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,gBAAiB,SAAQ,YAAY;IACzC,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,KAAI,CAAC;CACX;AAGD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,SAAS;IAClC,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,GAAa,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YACtD,YAAY,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;YAC7C,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,YAAY,EAAE;YACrG,kBAAkB,EAAE,EAAE;YACtB,yBAAyB,EAAE,IAAI;SAChC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAC;YACxD,KAAK,CAAC,aAAa,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC;YACrC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS;QACb,MAAM,KAAK,GAAa,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YACtD,YAAY,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;YAC7C,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,YAAY,EAAE;YACrG,kBAAkB,EAAE,EAAE;YACtB,qBAAqB,EAAE,IAAI;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC;YACH,gBAAgB;YAChB,IAAI,GAAG,CAAC;YACR,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;gBACxC,QAAQ,EAAE,CAAC;gBACX,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,IAAI,KAAK,EAAE,CAAC;gBACpB,CAAC;gBACD,GAAG,GAAG,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;YACzC,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACpC,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YACrC,4DAA4D;YAC5D,OAAO,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACpC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;gBAAS,CAAC;YACT,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,GAAa,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YACtD,YAAY,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;YAC7C,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,oDAAoD,CAAC,CAAC;IAC3G,CAAC;CACF,CAAA;AA7EO;IADL,IAAI;yCA0BJ;AAGK;IADL,IAAI;6CAsCJ;AAGK;IADL,IAAI;gDASJ;AAvFG,YAAY;IADjB,KAAK;GACA,YAAY,CAwFjB"}
|