mongodb-dynamic-api 2.3.11 → 2.3.12
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/CHANGELOG.md +2 -0
- package/package.json +1 -1
- package/src/modules/auth/auth.helper.js +1 -0
- package/src/modules/auth/auth.helper.js.map +1 -1
- package/src/modules/auth/auth.module.js +3 -1
- package/src/modules/auth/auth.module.js.map +1 -1
- package/src/modules/auth/mixins/auth-controller.mixin.js +1 -1
- package/src/modules/auth/mixins/auth-controller.mixin.js.map +1 -1
- package/src/modules/auth/services/base-auth.service.d.ts +2 -0
- package/src/modules/auth/services/base-auth.service.js +7 -4
- package/src/modules/auth/services/base-auth.service.js.map +1 -1
- package/src/routes/duplicate-many/base-duplicate-many.service.js +1 -1
- package/src/routes/duplicate-many/base-duplicate-many.service.js.map +1 -1
- package/src/routes/duplicate-one/base-duplicate-one.service.js +1 -1
- package/src/routes/duplicate-one/base-duplicate-one.service.js.map +1 -1
- package/src/routes/get-one/base-get-one.service.js +1 -1
- package/src/routes/get-one/base-get-one.service.js.map +1 -1
- package/src/routes/replace-one/base-replace-one.service.js +1 -1
- package/src/routes/replace-one/base-replace-one.service.js.map +1 -1
- package/src/routes/update-many/base-update-many.service.js +1 -1
- package/src/routes/update-many/base-update-many.service.js.map +1 -1
- package/src/routes/update-one/base-update-one.service.js +1 -1
- package/src/routes/update-one/base-update-one.service.js.map +1 -1
- package/src/services/base/base.service.d.ts +1 -1
- package/src/services/base/base.service.js +5 -1
- package/src/services/base/base.service.js.map +1 -1
- package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.d.ts +1 -0
- package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js +8 -2
- package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js.map +1 -1
- package/src/version.json +1 -1
- package/test/dynamic-api-for-root.e2e-spec.js +147 -30
- package/test/dynamic-api-for-root.e2e-spec.js.map +1 -1
- package/test/e2e.setup.d.ts +7 -7
- package/test/e2e.setup.js +10 -10
- package/test/e2e.setup.js.map +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,23 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const mongoose_1 = require("@nestjs/mongoose");
|
|
3
13
|
const testing_1 = require("@nestjs/testing");
|
|
4
|
-
const
|
|
14
|
+
const mongoose_2 = require("mongoose");
|
|
5
15
|
const src_1 = require("../src");
|
|
6
16
|
const e2e_setup_1 = require("./e2e.setup");
|
|
7
17
|
require("dotenv/config");
|
|
8
18
|
describe('DynamicApiModule forRoot (e2e)', () => {
|
|
9
19
|
let app;
|
|
10
20
|
const uri = process.env.MONGO_DB_URL;
|
|
11
|
-
|
|
12
|
-
|
|
21
|
+
const initModule = async (dynamicApiForRootOptions) => {
|
|
22
|
+
const moduleRef = await testing_1.Test.createTestingModule({
|
|
23
|
+
imports: [src_1.DynamicApiModule.forRoot(uri, dynamicApiForRootOptions)],
|
|
24
|
+
}).compile();
|
|
25
|
+
return (0, e2e_setup_1.createTestingApp)(moduleRef);
|
|
26
|
+
};
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
src_1.DynamicApiModule.state['resetState']();
|
|
29
|
+
});
|
|
13
30
|
afterEach(async () => {
|
|
14
|
-
await (0, e2e_setup_1.closeTestingApp)(
|
|
31
|
+
await (0, e2e_setup_1.closeTestingApp)(mongoose_2.default.connections);
|
|
15
32
|
});
|
|
16
33
|
it('should initialize dynamic api module state with default options', async () => {
|
|
17
|
-
|
|
18
|
-
imports: [src_1.DynamicApiModule.forRoot(uri)],
|
|
19
|
-
}).compile();
|
|
20
|
-
app = await (0, e2e_setup_1.createTestingApp)(moduleRef);
|
|
34
|
+
app = await initModule({});
|
|
21
35
|
expect(app).toBeDefined();
|
|
22
36
|
expect(src_1.DynamicApiModule.state.get()).toStrictEqual({
|
|
23
37
|
uri,
|
|
@@ -47,30 +61,16 @@ describe('DynamicApiModule forRoot (e2e)', () => {
|
|
|
47
61
|
});
|
|
48
62
|
});
|
|
49
63
|
it('should initialize dynamic api module state with custom options', async () => {
|
|
50
|
-
|
|
64
|
+
app = await initModule({
|
|
51
65
|
useGlobalCache: false,
|
|
52
66
|
cacheOptions: {
|
|
53
67
|
excludePaths: ['/fake-path'],
|
|
54
68
|
},
|
|
55
|
-
useAuth: {
|
|
56
|
-
userEntity: UserEntity,
|
|
57
|
-
login: {
|
|
58
|
-
loginField: 'login',
|
|
59
|
-
passwordField: 'pass',
|
|
60
|
-
},
|
|
61
|
-
jwt: {
|
|
62
|
-
secret: 'custom-secret',
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
69
|
routesConfig: {
|
|
66
70
|
defaults: ['GetMany', 'GetOne', 'CreateOne', 'UpdateOne', 'DeleteOne'],
|
|
67
71
|
excluded: ['CreateMany', 'UpdateMany', 'DeleteMany'],
|
|
68
72
|
},
|
|
69
|
-
};
|
|
70
|
-
const moduleRef = await testing_1.Test.createTestingModule({
|
|
71
|
-
imports: [src_1.DynamicApiModule.forRoot(uri, dynamicApiForRootOptions)],
|
|
72
|
-
}).compile();
|
|
73
|
-
app = await (0, e2e_setup_1.createTestingApp)(moduleRef);
|
|
73
|
+
});
|
|
74
74
|
expect(app).toBeDefined();
|
|
75
75
|
expect(src_1.DynamicApiModule.state.get()).toStrictEqual({
|
|
76
76
|
uri,
|
|
@@ -78,17 +78,134 @@ describe('DynamicApiModule forRoot (e2e)', () => {
|
|
|
78
78
|
isGlobalCacheEnabled: false,
|
|
79
79
|
connectionName: 'dynamic-api-connection',
|
|
80
80
|
cacheExcludedPaths: ['/fake-path'],
|
|
81
|
-
credentials:
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
},
|
|
85
|
-
isAuthEnabled: true,
|
|
86
|
-
jwtSecret: 'custom-secret',
|
|
81
|
+
credentials: null,
|
|
82
|
+
isAuthEnabled: false,
|
|
83
|
+
jwtSecret: undefined,
|
|
87
84
|
routesConfig: {
|
|
88
85
|
defaults: ['GetMany', 'GetOne', 'CreateOne', 'UpdateOne', 'DeleteOne'],
|
|
89
86
|
excluded: ['CreateMany', 'UpdateMany', 'DeleteMany'],
|
|
90
87
|
},
|
|
91
88
|
});
|
|
92
89
|
});
|
|
90
|
+
describe('useAuth when only userEntity is provided', () => {
|
|
91
|
+
let UserEntity = class UserEntity extends src_1.BaseEntity {
|
|
92
|
+
};
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, mongoose_1.Prop)({ type: String, required: true }),
|
|
95
|
+
__metadata("design:type", String)
|
|
96
|
+
], UserEntity.prototype, "email", void 0);
|
|
97
|
+
__decorate([
|
|
98
|
+
(0, mongoose_1.Prop)({ type: String, required: true }),
|
|
99
|
+
__metadata("design:type", String)
|
|
100
|
+
], UserEntity.prototype, "password", void 0);
|
|
101
|
+
UserEntity = __decorate([
|
|
102
|
+
(0, mongoose_1.Schema)()
|
|
103
|
+
], UserEntity);
|
|
104
|
+
beforeEach(async () => {
|
|
105
|
+
app = await initModule({ useAuth: { userEntity: UserEntity } });
|
|
106
|
+
});
|
|
107
|
+
it('should initialize dynamic api module state and authentication API with default options', async () => {
|
|
108
|
+
expect(app).toBeDefined();
|
|
109
|
+
expect(src_1.DynamicApiModule.state.get()).toStrictEqual({
|
|
110
|
+
uri,
|
|
111
|
+
initialized: true,
|
|
112
|
+
isGlobalCacheEnabled: true,
|
|
113
|
+
connectionName: 'dynamic-api-connection',
|
|
114
|
+
cacheExcludedPaths: [],
|
|
115
|
+
credentials: {
|
|
116
|
+
loginField: 'email',
|
|
117
|
+
passwordField: 'password',
|
|
118
|
+
},
|
|
119
|
+
isAuthEnabled: true,
|
|
120
|
+
jwtSecret: 'dynamic-api-jwt-secret',
|
|
121
|
+
routesConfig: {
|
|
122
|
+
defaults: [
|
|
123
|
+
'GetMany',
|
|
124
|
+
'GetOne',
|
|
125
|
+
'CreateMany',
|
|
126
|
+
'CreateOne',
|
|
127
|
+
'UpdateMany',
|
|
128
|
+
'UpdateOne',
|
|
129
|
+
'ReplaceOne',
|
|
130
|
+
'DuplicateMany',
|
|
131
|
+
'DuplicateOne',
|
|
132
|
+
'DeleteMany',
|
|
133
|
+
'DeleteOne',
|
|
134
|
+
],
|
|
135
|
+
excluded: [],
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
describe('POST /register', () => {
|
|
140
|
+
it('should throw a bad request exception if email is missing', async () => {
|
|
141
|
+
const { body, status } = await e2e_setup_1.server.post('/auth/register', { username: 'unit-test', password: 'test-2' });
|
|
142
|
+
expect(status).toBe(400);
|
|
143
|
+
expect(body).toEqual({
|
|
144
|
+
error: 'Bad Request',
|
|
145
|
+
message: ['Path `email` is required.'],
|
|
146
|
+
statusCode: 400,
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
it('should throw a bad request exception if password is missing', async () => {
|
|
150
|
+
const { body, status } = await e2e_setup_1.server.post('/auth/register', { email: 'unit@test.co', pass: 'test-2' });
|
|
151
|
+
expect(status).toBe(400);
|
|
152
|
+
expect(body).toEqual({
|
|
153
|
+
error: 'Bad Request',
|
|
154
|
+
message: [
|
|
155
|
+
'password must be a string',
|
|
156
|
+
'password should not be empty',
|
|
157
|
+
],
|
|
158
|
+
statusCode: 400,
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
it('should create a new user and return access token', async () => {
|
|
162
|
+
const { body, status } = await e2e_setup_1.server.post('/auth/register', { email: 'unit@test.co', password: 'test' });
|
|
163
|
+
expect(status).toBe(201);
|
|
164
|
+
expect(body).toEqual({ accessToken: expect.any(String) });
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe('POST /login', () => {
|
|
168
|
+
it('should throw an unauthorized exception if email is missing', async () => {
|
|
169
|
+
const { body, status } = await e2e_setup_1.server.post('/auth/login', { pass: 'test-2' });
|
|
170
|
+
expect(status).toBe(401);
|
|
171
|
+
expect(body).toEqual({
|
|
172
|
+
message: 'Unauthorized',
|
|
173
|
+
statusCode: 401,
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
it('should throw an unauthorized exception if password is missing', async () => {
|
|
177
|
+
const { body, status } = await e2e_setup_1.server.post('/auth/login', { email: 'unit@test.co' });
|
|
178
|
+
expect(status).toBe(401);
|
|
179
|
+
expect(body).toEqual({
|
|
180
|
+
message: 'Unauthorized',
|
|
181
|
+
statusCode: 401,
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
it('should return access token', async () => {
|
|
185
|
+
await e2e_setup_1.server.post('/auth/register', { email: 'unit@test.co', password: 'test' });
|
|
186
|
+
const { body, status } = await e2e_setup_1.server.post('/auth/login', { email: 'unit@test.co', password: 'test' });
|
|
187
|
+
expect(status).toBe(200);
|
|
188
|
+
expect(body).toEqual({ accessToken: expect.any(String) });
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
describe('GET /account', () => {
|
|
192
|
+
it('should throw an unauthorized exception if access token is missing', async () => {
|
|
193
|
+
const { body, status } = await e2e_setup_1.server.get('/auth/account');
|
|
194
|
+
expect(status).toBe(401);
|
|
195
|
+
expect(body).toEqual({
|
|
196
|
+
message: 'Unauthorized',
|
|
197
|
+
statusCode: 401,
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
it('should return user account', async () => {
|
|
201
|
+
await e2e_setup_1.server.post('/auth/register', { email: 'unit@test.co', password: 'test' });
|
|
202
|
+
const { body: { accessToken } } = await e2e_setup_1.server.post('/auth/login', { email: 'unit@test.co', password: 'test' });
|
|
203
|
+
const headers = { Authorization: `Bearer ${accessToken}` };
|
|
204
|
+
const { body: account, status: accountStatus } = await e2e_setup_1.server.get('/auth/account', { headers });
|
|
205
|
+
expect(accountStatus).toBe(200);
|
|
206
|
+
expect(account).toEqual({ id: expect.any(String), email: 'unit@test.co' });
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
});
|
|
93
210
|
});
|
|
94
211
|
//# sourceMappingURL=dynamic-api-for-root.e2e-spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-api-for-root.e2e-spec.js","sourceRoot":"","sources":["../../libs/dynamic-api/test/dynamic-api-for-root.e2e-spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dynamic-api-for-root.e2e-spec.js","sourceRoot":"","sources":["../../libs/dynamic-api/test/dynamic-api-for-root.e2e-spec.ts"],"names":[],"mappings":"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"}
|
package/test/e2e.setup.d.ts
CHANGED
|
@@ -24,18 +24,18 @@
|
|
|
24
24
|
/// <reference types="mongoose/types/inferschematype" />
|
|
25
25
|
import { TestingModule } from '@nestjs/testing';
|
|
26
26
|
import mongoose from 'mongoose';
|
|
27
|
-
type RequestOptions = {
|
|
28
|
-
query?:
|
|
27
|
+
type RequestOptions<Query extends object = any> = {
|
|
28
|
+
query?: Query;
|
|
29
29
|
authToken?: string;
|
|
30
30
|
headers?: Record<string, unknown>;
|
|
31
31
|
};
|
|
32
32
|
export declare function createTestingApp(moduleRef: TestingModule, initFixtures?: (connection: mongoose.Connection) => Promise<void>, initMainCb?: (app: any) => Promise<void>): Promise<import("@nestjs/common").INestApplication<any>>;
|
|
33
33
|
export declare function closeTestingApp(connections: mongoose.Connection[]): Promise<void>;
|
|
34
34
|
export declare const server: {
|
|
35
|
-
get: (path: string, { authToken, query, headers }?: RequestOptions) => Promise<
|
|
36
|
-
post: (path: string, body:
|
|
37
|
-
patch: (path: string, body:
|
|
38
|
-
put: (path: string, body:
|
|
39
|
-
delete: (path: string, { authToken, query, headers }?: RequestOptions) => Promise<
|
|
35
|
+
get: <Query extends object = any, Response_1 = any>(path: string, { authToken, query, headers }?: RequestOptions<Query>) => Promise<Response_1>;
|
|
36
|
+
post: <Body_1 extends object, Response_2 = any, Query_1 extends object = any>(path: string, body: Body_1, { authToken, query, headers }?: RequestOptions<Query_1>) => Promise<Response_2>;
|
|
37
|
+
patch: <Body_2 extends object, Response_3 = any, Query_2 extends object = any>(path: string, body: Body_2, { authToken, query, headers }?: RequestOptions<Query_2>) => Promise<Response_3>;
|
|
38
|
+
put: <Body_3 extends object, Response_4 = any, Query_3 extends object = any>(path: string, body: Body_3, { authToken, query, headers }?: RequestOptions<Query_3>) => Promise<Response_4>;
|
|
39
|
+
delete: <Query_4 extends object = any, Response_5 = any>(path: string, { authToken, query, headers }?: RequestOptions<Query_4>) => Promise<Response_5>;
|
|
40
40
|
};
|
|
41
41
|
export {};
|
package/test/e2e.setup.js
CHANGED
|
@@ -44,10 +44,10 @@ const verifyApp = () => {
|
|
|
44
44
|
return supertest.agent(global.app.getHttpServer());
|
|
45
45
|
};
|
|
46
46
|
exports.server = {
|
|
47
|
-
get: async (path, { authToken, query
|
|
47
|
+
get: async (path, { authToken, query, headers = {} } = {}) => {
|
|
48
48
|
return verifyApp()
|
|
49
49
|
.get(path)
|
|
50
|
-
.query(query)
|
|
50
|
+
.query(query ?? {})
|
|
51
51
|
.set({
|
|
52
52
|
...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
|
|
53
53
|
'Content-Type': 'application/json',
|
|
@@ -55,10 +55,10 @@ exports.server = {
|
|
|
55
55
|
...headers,
|
|
56
56
|
});
|
|
57
57
|
},
|
|
58
|
-
post: async (path, body, { authToken, query
|
|
58
|
+
post: async (path, body, { authToken, query, headers = {} } = {}) => {
|
|
59
59
|
return verifyApp()
|
|
60
60
|
.post(path)
|
|
61
|
-
.query(query)
|
|
61
|
+
.query(query ?? {})
|
|
62
62
|
.send(body)
|
|
63
63
|
.set({
|
|
64
64
|
...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
|
|
@@ -67,10 +67,10 @@ exports.server = {
|
|
|
67
67
|
...headers,
|
|
68
68
|
});
|
|
69
69
|
},
|
|
70
|
-
patch: async (path, body, { authToken, query
|
|
70
|
+
patch: async (path, body, { authToken, query, headers = {} } = {}) => {
|
|
71
71
|
return verifyApp()
|
|
72
72
|
.patch(path)
|
|
73
|
-
.query(query)
|
|
73
|
+
.query(query ?? {})
|
|
74
74
|
.send(body)
|
|
75
75
|
.set({
|
|
76
76
|
...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
|
|
@@ -79,10 +79,10 @@ exports.server = {
|
|
|
79
79
|
...headers,
|
|
80
80
|
});
|
|
81
81
|
},
|
|
82
|
-
put: async (path, body, { authToken, query
|
|
82
|
+
put: async (path, body, { authToken, query, headers = {} } = {}) => {
|
|
83
83
|
return verifyApp()
|
|
84
84
|
.put(path)
|
|
85
|
-
.query(query)
|
|
85
|
+
.query(query ?? {})
|
|
86
86
|
.send(body)
|
|
87
87
|
.set({
|
|
88
88
|
...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
|
|
@@ -91,10 +91,10 @@ exports.server = {
|
|
|
91
91
|
...headers,
|
|
92
92
|
});
|
|
93
93
|
},
|
|
94
|
-
delete: async (path, { authToken, query
|
|
94
|
+
delete: async (path, { authToken, query, headers = {} } = {}) => {
|
|
95
95
|
return verifyApp()
|
|
96
96
|
.delete(path)
|
|
97
|
-
.query(query)
|
|
97
|
+
.query(query ?? {})
|
|
98
98
|
.set({
|
|
99
99
|
...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),
|
|
100
100
|
'Content-Type': 'application/json',
|
package/test/e2e.setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e2e.setup.js","sourceRoot":"","sources":["../../libs/dynamic-api/test/e2e.setup.ts"],"names":[],"mappings":";;;AACA,uCAAgC;AAChC,uCAAuC;AAQvC,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;IAChD,MAAM,UAAU,GAAG,MAAM,kBAAQ,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IAC9F,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC,CAAC;AAEK,KAAK,UAAU,gBAAgB,CACpC,SAAwB,EACxB,YAAiE,EACjE,UAAwC;IAExC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;IAE/C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAExB,MAAM,eAAe,EAAE,CAAC;IAExB,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,MAAM,kBAAQ,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QAC9F,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC;AACpB,CAAC;AAtBD,4CAsBC;AAEM,KAAK,UAAU,eAAe,CAAC,WAAkC;IACtE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAEzB,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAVD,0CAUC;AAED,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC;AAEW,QAAA,MAAM,GAAG;IACpB,GAAG,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"e2e.setup.js","sourceRoot":"","sources":["../../libs/dynamic-api/test/e2e.setup.ts"],"names":[],"mappings":"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"}
|