@etohq/test-utils 1.0.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.
- package/dist/database.d.ts +29 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +139 -0
- package/dist/database.js.map +1 -0
- package/dist/eto-test-runner-utils/bootstrap-app.d.ts +10 -0
- package/dist/eto-test-runner-utils/bootstrap-app.d.ts.map +1 -0
- package/dist/eto-test-runner-utils/bootstrap-app.js +59 -0
- package/dist/eto-test-runner-utils/bootstrap-app.js.map +1 -0
- package/dist/eto-test-runner-utils/clear-instances.d.ts +8 -0
- package/dist/eto-test-runner-utils/clear-instances.d.ts.map +1 -0
- package/dist/eto-test-runner-utils/clear-instances.js +14 -0
- package/dist/eto-test-runner-utils/clear-instances.js.map +1 -0
- package/dist/eto-test-runner-utils/config.d.ts +5 -0
- package/dist/eto-test-runner-utils/config.d.ts.map +1 -0
- package/dist/eto-test-runner-utils/config.js +31 -0
- package/dist/eto-test-runner-utils/config.js.map +1 -0
- package/dist/eto-test-runner-utils/index.d.ts +6 -0
- package/dist/eto-test-runner-utils/index.d.ts.map +1 -0
- package/dist/eto-test-runner-utils/index.js +22 -0
- package/dist/eto-test-runner-utils/index.js.map +1 -0
- package/dist/eto-test-runner-utils/use-db.d.ts +15 -0
- package/dist/eto-test-runner-utils/use-db.d.ts.map +1 -0
- package/dist/eto-test-runner-utils/use-db.js +56 -0
- package/dist/eto-test-runner-utils/use-db.js.map +1 -0
- package/dist/eto-test-runner-utils/utils.d.ts +2 -0
- package/dist/eto-test-runner-utils/utils.d.ts.map +1 -0
- package/dist/eto-test-runner-utils/utils.js +10 -0
- package/dist/eto-test-runner-utils/utils.js.map +1 -0
- package/dist/eto-test-runner.d.ts +31 -0
- package/dist/eto-test-runner.d.ts.map +1 -0
- package/dist/eto-test-runner.js +144 -0
- package/dist/eto-test-runner.js.map +1 -0
- package/dist/events.d.ts +3 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +41 -0
- package/dist/events.js.map +1 -0
- package/dist/id-map.d.ts +7 -0
- package/dist/id-map.d.ts.map +1 -0
- package/dist/id-map.js +22 -0
- package/dist/id-map.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/init-modules.d.ts +18 -0
- package/dist/init-modules.d.ts.map +1 -0
- package/dist/init-modules.js +45 -0
- package/dist/init-modules.js.map +1 -0
- package/dist/jest.d.ts +2 -0
- package/dist/jest.d.ts.map +1 -0
- package/dist/jest.js +24 -0
- package/dist/jest.js.map +1 -0
- package/dist/mock-event-bus-service.d.ts +9 -0
- package/dist/mock-event-bus-service.d.ts.map +1 -0
- package/dist/mock-event-bus-service.js +19 -0
- package/dist/mock-event-bus-service.js.map +1 -0
- package/dist/module-test-runner.d.ts +24 -0
- package/dist/module-test-runner.d.ts.map +1 -0
- package/dist/module-test-runner.js +148 -0
- package/dist/module-test-runner.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { MikroORM, Options, SqlEntityManager } from "@mikro-orm/postgresql";
|
|
2
|
+
export declare function getDatabaseURL(dbName?: string): string;
|
|
3
|
+
export declare function getMikroOrmConfig({ mikroOrmEntities, pathToMigrations, clientUrl, schema, }: {
|
|
4
|
+
mikroOrmEntities: any[];
|
|
5
|
+
pathToMigrations?: string;
|
|
6
|
+
clientUrl?: string;
|
|
7
|
+
schema?: string;
|
|
8
|
+
}): Options;
|
|
9
|
+
export interface TestDatabase {
|
|
10
|
+
mikroOrmEntities: any[];
|
|
11
|
+
pathToMigrations?: string;
|
|
12
|
+
schema?: string;
|
|
13
|
+
clientUrl?: string;
|
|
14
|
+
orm: MikroORM | null;
|
|
15
|
+
manager: SqlEntityManager | null;
|
|
16
|
+
setupDatabase(): Promise<void>;
|
|
17
|
+
clearDatabase(): Promise<void>;
|
|
18
|
+
getManager(): SqlEntityManager;
|
|
19
|
+
forkManager(): SqlEntityManager;
|
|
20
|
+
getOrm(): MikroORM;
|
|
21
|
+
}
|
|
22
|
+
export declare function getMikroOrmWrapper({ mikroOrmEntities, pathToMigrations, clientUrl, schema, }: {
|
|
23
|
+
mikroOrmEntities: any[];
|
|
24
|
+
pathToMigrations?: string;
|
|
25
|
+
clientUrl?: string;
|
|
26
|
+
schema?: string;
|
|
27
|
+
}): TestDatabase;
|
|
28
|
+
export declare const dbTestUtilFactory: () => any;
|
|
29
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAa3E,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAStD;AAED,wBAAgB,iBAAiB,CAAC,EAChC,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,MAAM,GACP,EAAE;IACD,gBAAgB,EAAE,GAAG,EAAE,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,OAAO,CAiBV;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,GAAG,EAAE,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAA;IACpB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAEhC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,UAAU,IAAI,gBAAgB,CAAA;IAC9B,WAAW,IAAI,gBAAgB,CAAA;IAC/B,MAAM,IAAI,QAAQ,CAAA;CACnB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,MAAM,GACP,EAAE;IACD,gBAAgB,EAAE,GAAG,EAAE,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,YAAY,CA2Ff;AAED,eAAO,MAAM,iBAAiB,QAAO,GAyCnC,CAAA"}
|
package/dist/database.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dbTestUtilFactory = void 0;
|
|
4
|
+
exports.getDatabaseURL = getDatabaseURL;
|
|
5
|
+
exports.getMikroOrmConfig = getMikroOrmConfig;
|
|
6
|
+
exports.getMikroOrmWrapper = getMikroOrmWrapper;
|
|
7
|
+
const postgresql_1 = require("@mikro-orm/postgresql");
|
|
8
|
+
const pg_god_1 = require("pg-god");
|
|
9
|
+
const DB_HOST = process.env.DB_HOST ?? "localhost";
|
|
10
|
+
const DB_USERNAME = process.env.DB_USERNAME ?? "";
|
|
11
|
+
const DB_PASSWORD = process.env.DB_PASSWORD ?? "";
|
|
12
|
+
const pgGodCredentials = {
|
|
13
|
+
user: DB_USERNAME,
|
|
14
|
+
password: DB_PASSWORD,
|
|
15
|
+
host: DB_HOST,
|
|
16
|
+
};
|
|
17
|
+
function getDatabaseURL(dbName) {
|
|
18
|
+
const DB_HOST = process.env.DB_HOST ?? "localhost";
|
|
19
|
+
const DB_USERNAME = process.env.DB_USERNAME ?? "";
|
|
20
|
+
const DB_PASSWORD = process.env.DB_PASSWORD;
|
|
21
|
+
const DB_NAME = dbName ?? process.env.DB_TEMP_NAME;
|
|
22
|
+
return `postgres://${DB_USERNAME}${DB_PASSWORD ? `:${DB_PASSWORD}` : ""}@${DB_HOST}/${DB_NAME}`;
|
|
23
|
+
}
|
|
24
|
+
function getMikroOrmConfig({ mikroOrmEntities, pathToMigrations, clientUrl, schema, }) {
|
|
25
|
+
const DB_URL = clientUrl ?? getDatabaseURL();
|
|
26
|
+
return {
|
|
27
|
+
type: "postgresql",
|
|
28
|
+
clientUrl: DB_URL,
|
|
29
|
+
entities: Object.values(mikroOrmEntities),
|
|
30
|
+
schema: schema ?? process.env.ETO_DB_SCHEMA,
|
|
31
|
+
debug: false,
|
|
32
|
+
pool: {
|
|
33
|
+
min: 2,
|
|
34
|
+
},
|
|
35
|
+
migrations: {
|
|
36
|
+
pathTs: pathToMigrations,
|
|
37
|
+
silent: true,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function getMikroOrmWrapper({ mikroOrmEntities, pathToMigrations, clientUrl, schema, }) {
|
|
42
|
+
return {
|
|
43
|
+
mikroOrmEntities,
|
|
44
|
+
pathToMigrations,
|
|
45
|
+
clientUrl: clientUrl ?? getDatabaseURL(),
|
|
46
|
+
schema: schema ?? process.env.ETO_DB_SCHEMA,
|
|
47
|
+
orm: null,
|
|
48
|
+
manager: null,
|
|
49
|
+
getManager() {
|
|
50
|
+
if (this.manager === null) {
|
|
51
|
+
throw new Error("manager entity not available");
|
|
52
|
+
}
|
|
53
|
+
return this.manager;
|
|
54
|
+
},
|
|
55
|
+
forkManager() {
|
|
56
|
+
if (this.manager === null) {
|
|
57
|
+
throw new Error("manager entity not available");
|
|
58
|
+
}
|
|
59
|
+
return this.manager.fork();
|
|
60
|
+
},
|
|
61
|
+
getOrm() {
|
|
62
|
+
if (this.orm === null) {
|
|
63
|
+
throw new Error("orm entity not available");
|
|
64
|
+
}
|
|
65
|
+
return this.orm;
|
|
66
|
+
},
|
|
67
|
+
async setupDatabase() {
|
|
68
|
+
const OrmConfig = getMikroOrmConfig({
|
|
69
|
+
mikroOrmEntities: this.mikroOrmEntities,
|
|
70
|
+
pathToMigrations: this.pathToMigrations,
|
|
71
|
+
clientUrl: this.clientUrl,
|
|
72
|
+
schema: this.schema,
|
|
73
|
+
});
|
|
74
|
+
// Initializing the ORM
|
|
75
|
+
this.orm = await postgresql_1.MikroORM.init(OrmConfig);
|
|
76
|
+
this.manager = this.orm.em;
|
|
77
|
+
try {
|
|
78
|
+
await this.orm.getSchemaGenerator().ensureDatabase();
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
console.log(err);
|
|
82
|
+
}
|
|
83
|
+
await this.manager?.execute(`CREATE SCHEMA IF NOT EXISTS "${this.schema ?? "public"}";`);
|
|
84
|
+
const pendingMigrations = await this.orm
|
|
85
|
+
.getMigrator()
|
|
86
|
+
.getPendingMigrations();
|
|
87
|
+
if (pendingMigrations && pendingMigrations.length > 0) {
|
|
88
|
+
await this.orm
|
|
89
|
+
.getMigrator()
|
|
90
|
+
.up({ migrations: pendingMigrations.map((m) => m.name) });
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
await this.orm.schema.refreshDatabase(); // ensure db exists and is fresh
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
async clearDatabase() {
|
|
97
|
+
if (this.orm === null) {
|
|
98
|
+
throw new Error("ORM not configured");
|
|
99
|
+
}
|
|
100
|
+
await this.manager?.execute(`DROP SCHEMA IF EXISTS "${this.schema ?? "public"}" CASCADE;`);
|
|
101
|
+
await this.manager?.execute(`CREATE SCHEMA IF NOT EXISTS "${this.schema ?? "public"}";`);
|
|
102
|
+
try {
|
|
103
|
+
await this.orm.close();
|
|
104
|
+
}
|
|
105
|
+
catch { }
|
|
106
|
+
this.orm = null;
|
|
107
|
+
this.manager = null;
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const dbTestUtilFactory = () => ({
|
|
112
|
+
pgConnection_: null,
|
|
113
|
+
create: async function (dbName) {
|
|
114
|
+
await (0, pg_god_1.createDatabase)({ databaseName: dbName, errorIfExist: false }, pgGodCredentials);
|
|
115
|
+
},
|
|
116
|
+
teardown: async function ({ schema } = {}) {
|
|
117
|
+
if (!this.pgConnection_) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const runRawQuery = this.pgConnection_.raw.bind(this.pgConnection_);
|
|
121
|
+
schema ??= "public";
|
|
122
|
+
await runRawQuery(`SET session_replication_role = 'replica';`);
|
|
123
|
+
const { rows: tableNames } = await runRawQuery(`SELECT table_name
|
|
124
|
+
FROM information_schema.tables
|
|
125
|
+
WHERE table_schema = '${schema}';`);
|
|
126
|
+
for (const { table_name } of tableNames) {
|
|
127
|
+
await runRawQuery(`DELETE
|
|
128
|
+
FROM ${schema}."${table_name}";`);
|
|
129
|
+
}
|
|
130
|
+
await runRawQuery(`SET session_replication_role = 'origin';`);
|
|
131
|
+
},
|
|
132
|
+
shutdown: async function (dbName) {
|
|
133
|
+
await this.pgConnection_?.context?.destroy();
|
|
134
|
+
await this.pgConnection_?.destroy();
|
|
135
|
+
return await (0, pg_god_1.dropDatabase)({ databaseName: dbName, errorIfNonExist: false }, pgGodCredentials);
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
exports.dbTestUtilFactory = dbTestUtilFactory;
|
|
139
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EtoContainer } from "@etohq/framework/types";
|
|
2
|
+
export declare function startApp({ cwd, env, }?: {
|
|
3
|
+
cwd?: string;
|
|
4
|
+
env?: Record<any, any>;
|
|
5
|
+
}): Promise<{
|
|
6
|
+
shutdown: () => Promise<void>;
|
|
7
|
+
container: EtoContainer;
|
|
8
|
+
port: number;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=bootstrap-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap-app.d.ts","sourceRoot":"","sources":["../../src/eto-test-runner-utils/bootstrap-app.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AA4BrD,wBAAsB,QAAQ,CAAC,EAC7B,GAAG,EACH,GAAQ,GACT,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAO,GAAG,OAAO,CAAC;IACzD,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,SAAS,EAAE,YAAY,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;CACb,CAAC,CAyCD"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.startApp = startApp;
|
|
7
|
+
const express_1 = __importDefault(require("express"));
|
|
8
|
+
const get_port_1 = __importDefault(require("get-port"));
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
const utils_2 = require("@etohq/framework/utils");
|
|
12
|
+
async function bootstrapApp({ cwd, env = {}, } = {}) {
|
|
13
|
+
const app = (0, express_1.default)();
|
|
14
|
+
(0, utils_1.applyEnvVarsToProcess)(env);
|
|
15
|
+
const loaders = require("@etohq/eto/loaders/index").default;
|
|
16
|
+
const { container, shutdown } = await loaders({
|
|
17
|
+
directory: (0, path_1.resolve)(cwd || process.cwd()),
|
|
18
|
+
expressApp: app,
|
|
19
|
+
});
|
|
20
|
+
const PORT = process.env.PORT ? parseInt(process.env.PORT) : await (0, get_port_1.default)();
|
|
21
|
+
return {
|
|
22
|
+
shutdown,
|
|
23
|
+
container,
|
|
24
|
+
app,
|
|
25
|
+
port: PORT,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async function startApp({ cwd, env = {}, } = {}) {
|
|
29
|
+
const { app, port, container, shutdown: etoShutdown, } = await bootstrapApp({
|
|
30
|
+
cwd,
|
|
31
|
+
env,
|
|
32
|
+
});
|
|
33
|
+
let expressServer;
|
|
34
|
+
const shutdown = async () => {
|
|
35
|
+
await (0, utils_2.promiseAll)([expressServer?.shutdown(), etoShutdown()]);
|
|
36
|
+
if (typeof global !== "undefined" && global?.gc) {
|
|
37
|
+
global.gc();
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
return await new Promise((resolve, reject) => {
|
|
41
|
+
const server = app
|
|
42
|
+
.listen(port)
|
|
43
|
+
.on("error", async (err) => {
|
|
44
|
+
await shutdown();
|
|
45
|
+
return reject(err);
|
|
46
|
+
})
|
|
47
|
+
.on("listening", () => {
|
|
48
|
+
process.send?.(port);
|
|
49
|
+
resolve({
|
|
50
|
+
shutdown,
|
|
51
|
+
container,
|
|
52
|
+
port,
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
// TODO: fix that once we find the appropriate place to put this util
|
|
56
|
+
expressServer = utils_2.GracefulShutdownServer.create(server);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=bootstrap-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap-app.js","sourceRoot":"","sources":["../../src/eto-test-runner-utils/bootstrap-app.ts"],"names":[],"mappings":";;;;;AA+BA,4BAgDC;AA/ED,sDAA6B;AAC7B,wDAA8B;AAC9B,+BAA8B;AAE9B,mCAA+C;AAC/C,kDAA2E;AAE3E,KAAK,UAAU,YAAY,CAAC,EAC1B,GAAG,EACH,GAAG,GAAG,EAAE,MACoC,EAAE;IAC9C,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAA;IACrB,IAAA,6BAAqB,EAAC,GAAG,CAAC,CAAA;IAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAAA;IAE3D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC;QAC5C,SAAS,EAAE,IAAA,cAAO,EAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACxC,UAAU,EAAE,GAAG;KAChB,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,kBAAO,GAAE,CAAA;IAE5E,OAAO;QACL,QAAQ;QACR,SAAS;QACT,GAAG;QACH,IAAI,EAAE,IAAI;KACX,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,EAC7B,GAAG,EACH,GAAG,GAAG,EAAE,MACoC,EAAE;IAK9C,MAAM,EACJ,GAAG,EACH,IAAI,EACJ,SAAS,EACT,QAAQ,EAAE,WAAW,GACtB,GAAG,MAAM,YAAY,CAAC;QACrB,GAAG;QACH,GAAG;KACJ,CAAC,CAAA;IAEF,IAAI,aAAa,CAAA;IAEjB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,IAAA,kBAAU,EAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;QAE5D,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,EAAE,EAAE,EAAE,CAAC;YAChD,MAAM,CAAC,EAAE,EAAE,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,GAAG;aACf,MAAM,CAAC,IAAI,CAAC;aACZ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACzB,MAAM,QAAQ,EAAE,CAAA;YAChB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC;aACD,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAA;YAEpB,OAAO,CAAC;gBACN,QAAQ;gBACR,SAAS;gBACT,IAAI;aACL,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEJ,qEAAqE;QACrE,aAAa,GAAG,8BAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cleanup temporary created resources for the migrations
|
|
3
|
+
* @internal I didnt find a god place to put that, should we eventually add a close function
|
|
4
|
+
* to the planner to handle that part? so that you would do planner.close() and it will handle the cleanup
|
|
5
|
+
* automatically just like we usually do for the classic migrations actions
|
|
6
|
+
*/
|
|
7
|
+
export declare function clearInstances(): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=clear-instances.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-instances.d.ts","sourceRoot":"","sources":["../../src/eto-test-runner-utils/clear-instances.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAsB,cAAc,kBAGnC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clearInstances = clearInstances;
|
|
4
|
+
/**
|
|
5
|
+
* cleanup temporary created resources for the migrations
|
|
6
|
+
* @internal I didnt find a god place to put that, should we eventually add a close function
|
|
7
|
+
* to the planner to handle that part? so that you would do planner.close() and it will handle the cleanup
|
|
8
|
+
* automatically just like we usually do for the classic migrations actions
|
|
9
|
+
*/
|
|
10
|
+
async function clearInstances() {
|
|
11
|
+
const { EtoModule } = require("@etohq/framework/modules-sdk");
|
|
12
|
+
EtoModule.clearInstances();
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=clear-instances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-instances.js","sourceRoot":"","sources":["../../src/eto-test-runner-utils/clear-instances.ts"],"names":[],"mappings":";;AAMA,wCAGC;AATD;;;;;GAKG;AACI,KAAK,UAAU,cAAc;IAClC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAC7D,SAAS,CAAC,cAAc,EAAE,CAAA;AAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/eto-test-runner-utils/config.ts"],"names":[],"mappings":"AAEA,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,iBAgCjD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.configLoaderOverride = configLoaderOverride;
|
|
4
|
+
const utils_1 = require("@etohq/framework/utils");
|
|
5
|
+
async function configLoaderOverride(entryDirectory, override) {
|
|
6
|
+
const { configManager } = await import("@etohq/framework/config");
|
|
7
|
+
const { logger } = await import("@etohq/framework");
|
|
8
|
+
const { configModule, error } = await (0, utils_1.getConfigFile)(entryDirectory, "eto-config");
|
|
9
|
+
if (error) {
|
|
10
|
+
throw new Error(error.message || "Error during config loading");
|
|
11
|
+
}
|
|
12
|
+
configModule.projectConfig.databaseDriverOptions;
|
|
13
|
+
configModule.projectConfig.databaseUrl = override.clientUrl;
|
|
14
|
+
configModule.projectConfig.databaseLogging = !!override.debug;
|
|
15
|
+
configModule.projectConfig.databaseDriverOptions =
|
|
16
|
+
override.clientUrl.includes("localhost")
|
|
17
|
+
? {}
|
|
18
|
+
: {
|
|
19
|
+
connection: {
|
|
20
|
+
ssl: { rejectUnauthorized: false },
|
|
21
|
+
},
|
|
22
|
+
idle_in_transaction_session_timeout: 20000,
|
|
23
|
+
};
|
|
24
|
+
logger.info("Disabling admin as we run integration tests");
|
|
25
|
+
Object.assign(configModule.admin ?? {}, { disable: true });
|
|
26
|
+
configManager.loadConfig({
|
|
27
|
+
projectConfig: configModule,
|
|
28
|
+
baseDir: entryDirectory,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/eto-test-runner-utils/config.ts"],"names":[],"mappings":";;AAEA,oDAkCC;AApCD,kDAAsD;AAE/C,KAAK,UAAU,oBAAoB,CACxC,cAAsB,EACtB,QAAgD;IAEhD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IACjE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;IACnD,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,qBAAa,EAEjD,cAAc,EAAE,YAAY,CAAC,CAAA;IAE/B,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,6BAA6B,CAAC,CAAA;IACjE,CAAC;IAED,YAAY,CAAC,aAAa,CAAC,qBAAqB,CAAA;IAChD,YAAY,CAAC,aAAa,CAAC,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAA;IAC3D,YAAY,CAAC,aAAa,CAAC,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAA;IAC7D,YAAY,CAAC,aAAa,CAAC,qBAAqB;QAC9C,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;YACtC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE;iBACnC;gBACD,mCAAmC,EAAE,KAAK;aAC3C,CAAA;IAEP,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;IAC1D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAE1D,aAAa,CAAC,UAAU,CAAC;QACvB,aAAa,EAAE,YAAY;QAC3B,OAAO,EAAE,cAAc;KACxB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eto-test-runner-utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./bootstrap-app"), exports);
|
|
18
|
+
__exportStar(require("./clear-instances"), exports);
|
|
19
|
+
__exportStar(require("./config"), exports);
|
|
20
|
+
__exportStar(require("./use-db"), exports);
|
|
21
|
+
__exportStar(require("./utils"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eto-test-runner-utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA+B;AAC/B,oDAAiC;AACjC,2CAAwB;AACxB,2CAAwB;AACxB,0CAAuB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { EtoAppLoader } from "@etohq/framework";
|
|
2
|
+
import { EtoContainer } from "@etohq/framework/types";
|
|
3
|
+
/**
|
|
4
|
+
* Initiates the database connection
|
|
5
|
+
*/
|
|
6
|
+
export declare function initDb(): Promise<any>;
|
|
7
|
+
/**
|
|
8
|
+
* Migrates the database
|
|
9
|
+
*/
|
|
10
|
+
export declare function migrateDatabase(appLoader: EtoAppLoader): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Syncs links with the databse
|
|
13
|
+
*/
|
|
14
|
+
export declare function syncLinks(appLoader: EtoAppLoader, directory: string, container: EtoContainer): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=use-db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-db.d.ts","sourceRoot":"","sources":["../../src/eto-test-runner-utils/use-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAGrD;;GAEG;AACH,wBAAsB,MAAM,iBAS3B;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,YAAY,iBAO5D;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,YAAY,iBAexB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initDb = initDb;
|
|
4
|
+
exports.migrateDatabase = migrateDatabase;
|
|
5
|
+
exports.syncLinks = syncLinks;
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const utils_1 = require("@etohq/framework/utils");
|
|
8
|
+
/**
|
|
9
|
+
* Initiates the database connection
|
|
10
|
+
*/
|
|
11
|
+
async function initDb() {
|
|
12
|
+
const { pgConnectionLoader, featureFlagsLoader } = await import("@etohq/framework");
|
|
13
|
+
const pgConnection = pgConnectionLoader();
|
|
14
|
+
await featureFlagsLoader();
|
|
15
|
+
return pgConnection;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Migrates the database
|
|
19
|
+
*/
|
|
20
|
+
async function migrateDatabase(appLoader) {
|
|
21
|
+
try {
|
|
22
|
+
await appLoader.runModulesMigrations();
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
console.error("Something went wrong while running the migrations");
|
|
26
|
+
throw err;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Syncs links with the databse
|
|
31
|
+
*/
|
|
32
|
+
async function syncLinks(appLoader, directory, container) {
|
|
33
|
+
try {
|
|
34
|
+
await loadCustomLinks(directory, container);
|
|
35
|
+
const planner = await appLoader.getLinksExecutionPlanner();
|
|
36
|
+
const actionPlan = await planner.createPlan();
|
|
37
|
+
actionPlan.forEach((action) => {
|
|
38
|
+
console.log(`Sync links: "${action.action}" ${action.tableName}`);
|
|
39
|
+
});
|
|
40
|
+
await planner.executePlan(actionPlan);
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
console.error("Something went wrong while syncing links");
|
|
44
|
+
throw err;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async function loadCustomLinks(directory, container) {
|
|
48
|
+
// TODO: move to framework once settle down
|
|
49
|
+
const { getResolvedPlugins, } = require("@etohq/eto/loaders/helpers/resolve-plugins");
|
|
50
|
+
const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
51
|
+
const plugins = await getResolvedPlugins(directory, configModule, true);
|
|
52
|
+
const linksSourcePaths = plugins.map((plugin) => (0, path_1.join)(plugin.resolve, "links"));
|
|
53
|
+
const { LinkLoader } = await import("@etohq/framework");
|
|
54
|
+
await new LinkLoader(linksSourcePaths).load();
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=use-db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-db.js","sourceRoot":"","sources":["../../src/eto-test-runner-utils/use-db.ts"],"names":[],"mappings":";;AAQA,wBASC;AAKD,0CAOC;AAKD,8BAkBC;AAnDD,+BAA2B;AAE3B,kDAAkE;AAElE;;GAEG;AACI,KAAK,UAAU,MAAM;IAC1B,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAC7D,kBAAkB,CACnB,CAAA;IAED,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAA;IACzC,MAAM,kBAAkB,EAAE,CAAA;IAE1B,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CAAC,SAAuB;IAC3D,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,oBAAoB,EAAE,CAAA;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;QAClE,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,SAAS,CAC7B,SAAuB,EACvB,SAAiB,EACjB,SAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAE3C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,wBAAwB,EAAE,CAAA;QAC1D,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;QAC7C,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;QACnE,CAAC,CAAC,CAAA;QACF,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;QACzD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,SAAuB;IACvE,2CAA2C;IAC3C,MAAM,EACJ,kBAAkB,GACnB,GAAG,OAAO,CAAC,4CAA4C,CAAC,CAAA;IAEzD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CACpC,iCAAyB,CAAC,aAAa,CACxC,CAAA;IACD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;IACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC9C,IAAA,WAAI,EAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAC9B,CAAA;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;IACvD,MAAM,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAA;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/eto-test-runner-utils/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,QAI3D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyEnvVarsToProcess = applyEnvVarsToProcess;
|
|
4
|
+
const utils_1 = require("@etohq/framework/utils");
|
|
5
|
+
function applyEnvVarsToProcess(env) {
|
|
6
|
+
if ((0, utils_1.isObject)(env)) {
|
|
7
|
+
Object.entries(env).forEach(([k, v]) => (process.env[k] = v));
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/eto-test-runner-utils/utils.ts"],"names":[],"mappings":";;AAEA,sDAIC;AAND,kDAAiD;AAEjD,SAAgB,qBAAqB,CAAC,GAAsB;IAC1D,IAAI,IAAA,gBAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { EtoAppOutput } from "@etohq/framework/modules-sdk";
|
|
2
|
+
import { EtoContainer } from "@etohq/framework/types";
|
|
3
|
+
export interface EtoSuiteOptions {
|
|
4
|
+
dbConnection: any;
|
|
5
|
+
getContainer: () => EtoContainer;
|
|
6
|
+
api: any;
|
|
7
|
+
dbUtils: {
|
|
8
|
+
create: (dbName: string) => Promise<void>;
|
|
9
|
+
teardown: (options: {
|
|
10
|
+
schema?: string;
|
|
11
|
+
}) => Promise<void>;
|
|
12
|
+
shutdown: (dbName: string) => Promise<void>;
|
|
13
|
+
};
|
|
14
|
+
dbConfig: {
|
|
15
|
+
dbName: string;
|
|
16
|
+
schema: string;
|
|
17
|
+
clientUrl: string;
|
|
18
|
+
};
|
|
19
|
+
getEtoApp: () => EtoAppOutput;
|
|
20
|
+
}
|
|
21
|
+
export declare function etoIntegrationTestRunner({ moduleName, dbName, etoConfigFile, schema, env, debug, inApp, testSuite, }: {
|
|
22
|
+
moduleName?: string;
|
|
23
|
+
env?: Record<string, any>;
|
|
24
|
+
dbName?: string;
|
|
25
|
+
etoConfigFile?: string;
|
|
26
|
+
schema?: string;
|
|
27
|
+
debug?: boolean;
|
|
28
|
+
inApp?: boolean;
|
|
29
|
+
testSuite: (options: EtoSuiteOptions) => void;
|
|
30
|
+
}): void;
|
|
31
|
+
//# sourceMappingURL=eto-test-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eto-test-runner.d.ts","sourceRoot":"","sources":["../src/eto-test-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAiBpE,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,GAAG,CAAA;IACjB,YAAY,EAAE,MAAM,YAAY,CAAA;IAChC,GAAG,EAAE,GAAG,CAAA;IACR,OAAO,EAAE;QACP,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACzC,QAAQ,EAAE,CAAC,OAAO,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACzD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAC5C,CAAA;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,SAAS,EAAE,MAAM,YAAY,CAAA;CAC9B;AAED,wBAAgB,wBAAwB,CAAC,EACvC,UAAU,EACV,MAAM,EACN,aAAa,EACb,MAAiB,EACjB,GAAQ,EACR,KAAa,EACb,KAAa,EACb,SAAS,GACV,EAAE;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;CAC9C,QAyKA"}
|