@webda/core 4.0.0-beta.3 → 4.0.0-beta.5
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/lib/application/application.d.ts +31 -0
- package/lib/application/application.d.ts.map +1 -1
- package/lib/application/application.js +55 -2
- package/lib/application/application.js.map +1 -1
- package/lib/application/deployment.d.ts +93 -0
- package/lib/application/deployment.d.ts.map +1 -0
- package/lib/application/deployment.js +99 -0
- package/lib/application/deployment.js.map +1 -0
- package/lib/application/unpackedapplication.d.ts.map +1 -1
- package/lib/application/unpackedapplication.js +9 -1
- package/lib/application/unpackedapplication.js.map +1 -1
- package/lib/bin/cli.d.ts +36 -1
- package/lib/bin/cli.d.ts.map +1 -1
- package/lib/bin/cli.js +108 -2
- package/lib/bin/cli.js.map +1 -1
- package/lib/contexts/execution.js +1 -1
- package/lib/contexts/execution.js.map +1 -1
- package/lib/contexts/operationcontext.d.ts +3 -0
- package/lib/contexts/operationcontext.d.ts.map +1 -1
- package/lib/contexts/operationcontext.js +6 -3
- package/lib/contexts/operationcontext.js.map +1 -1
- package/lib/core/core.js +1 -1
- package/lib/core/core.js.map +1 -1
- package/lib/core/hooks.d.ts +22 -0
- package/lib/core/hooks.d.ts.map +1 -1
- package/lib/core/hooks.js +24 -0
- package/lib/core/hooks.js.map +1 -1
- package/lib/core/operations.d.ts.map +1 -1
- package/lib/core/operations.js +13 -11
- package/lib/core/operations.js.map +1 -1
- package/lib/deployers/deployer.d.ts +157 -0
- package/lib/deployers/deployer.d.ts.map +1 -0
- package/lib/deployers/deployer.js +81 -0
- package/lib/deployers/deployer.js.map +1 -0
- package/lib/deployers/git.d.ts +27 -0
- package/lib/deployers/git.d.ts.map +1 -0
- package/lib/deployers/git.js +66 -0
- package/lib/deployers/git.js.map +1 -0
- package/lib/deployers/packager.d.ts +85 -0
- package/lib/deployers/packager.d.ts.map +1 -0
- package/lib/deployers/packager.js +259 -0
- package/lib/deployers/packager.js.map +1 -0
- package/lib/index.d.ts +10 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +10 -4
- package/lib/index.js.map +1 -1
- package/lib/models/aclmodel.d.ts +32 -5
- package/lib/models/aclmodel.d.ts.map +1 -1
- package/lib/models/aclmodel.js +34 -9
- package/lib/models/aclmodel.js.map +1 -1
- package/lib/models/coremodel.model.d.ts.map +1 -1
- package/lib/models/coremodel.model.js.map +1 -1
- package/lib/models/decorator.d.ts +4 -0
- package/lib/models/decorator.d.ts.map +1 -1
- package/lib/models/decorator.js +4 -0
- package/lib/models/decorator.js.map +1 -1
- package/lib/models/deployment.d.ts +2 -21
- package/lib/models/deployment.d.ts.map +1 -1
- package/lib/models/encrypted.model.d.ts +46 -0
- package/lib/models/encrypted.model.d.ts.map +1 -0
- package/lib/models/encrypted.model.js +87 -0
- package/lib/models/encrypted.model.js.map +1 -0
- package/lib/models/ident.model.d.ts +103 -64
- package/lib/models/ident.model.d.ts.map +1 -1
- package/lib/models/ident.model.js +168 -76
- package/lib/models/ident.model.js.map +1 -1
- package/lib/models/ownermodel.model.d.ts +25 -3
- package/lib/models/ownermodel.model.d.ts.map +1 -1
- package/lib/models/ownermodel.model.js +46 -10
- package/lib/models/ownermodel.model.js.map +1 -1
- package/lib/models/password.model.d.ts +78 -0
- package/lib/models/password.model.d.ts.map +1 -0
- package/lib/models/password.model.js +171 -0
- package/lib/models/password.model.js.map +1 -0
- package/lib/models/permissions.d.ts +236 -0
- package/lib/models/permissions.d.ts.map +1 -0
- package/lib/models/permissions.js +495 -0
- package/lib/models/permissions.js.map +1 -0
- package/lib/models/refreshtoken.model.d.ts +30 -0
- package/lib/models/refreshtoken.model.d.ts.map +1 -0
- package/lib/models/refreshtoken.model.js +29 -0
- package/lib/models/refreshtoken.model.js.map +1 -0
- package/lib/models/registry.model.d.ts.map +1 -1
- package/lib/models/registry.model.js.map +1 -1
- package/lib/models/rolemodel.model.d.ts.map +1 -1
- package/lib/models/rolemodel.model.js +1 -2
- package/lib/models/rolemodel.model.js.map +1 -1
- package/lib/models/simpleuser.model.d.ts.map +1 -1
- package/lib/models/simpleuser.model.js +2 -1
- package/lib/models/simpleuser.model.js.map +1 -1
- package/lib/models/user.model.d.ts +33 -21
- package/lib/models/user.model.d.ts.map +1 -1
- package/lib/models/user.model.js +81 -26
- package/lib/models/user.model.js.map +1 -1
- package/lib/rest/restoperationstransport.service.d.ts.map +1 -1
- package/lib/rest/restoperationstransport.service.js +7 -5
- package/lib/rest/restoperationstransport.service.js.map +1 -1
- package/lib/services/audit.model.d.ts +2 -2
- package/lib/services/audit.model.d.ts.map +1 -1
- package/lib/services/audit.model.js +16 -6
- package/lib/services/audit.model.js.map +1 -1
- package/lib/services/binary.service.d.ts +42 -4
- package/lib/services/binary.service.d.ts.map +1 -1
- package/lib/services/binary.service.js +33 -13
- package/lib/services/binary.service.js.map +1 -1
- package/lib/services/domainservice.service.d.ts +111 -1
- package/lib/services/domainservice.service.d.ts.map +1 -1
- package/lib/services/domainservice.service.js +303 -50
- package/lib/services/domainservice.service.js.map +1 -1
- package/lib/services/iauthentication.d.ts +196 -3
- package/lib/services/iauthentication.d.ts.map +1 -1
- package/lib/services/servicecommands.d.ts.map +1 -1
- package/lib/services/servicecommands.js +17 -11
- package/lib/services/servicecommands.js.map +1 -1
- package/lib/services/token.service.d.ts +95 -0
- package/lib/services/token.service.d.ts.map +1 -0
- package/lib/services/token.service.js +182 -0
- package/lib/services/token.service.js.map +1 -0
- package/lib/session/manager.model.d.ts +16 -0
- package/lib/session/manager.model.d.ts.map +1 -1
- package/lib/session/manager.model.js +58 -1
- package/lib/session/manager.model.js.map +1 -1
- package/lib/session/session.d.ts +44 -1
- package/lib/session/session.d.ts.map +1 -1
- package/lib/session/session.js +51 -2
- package/lib/session/session.js.map +1 -1
- package/lib/stores/memory.service.d.ts.map +1 -1
- package/lib/stores/memory.service.js +4 -3
- package/lib/stores/memory.service.js.map +1 -1
- package/lib/templates/templates.d.ts +8 -0
- package/lib/templates/templates.d.ts.map +1 -1
- package/lib/templates/templates.js +10 -1
- package/lib/templates/templates.js.map +1 -1
- package/lib/test/behavior-fixture.model.d.ts +30 -0
- package/lib/test/behavior-fixture.model.d.ts.map +1 -0
- package/lib/test/behavior-fixture.model.js +63 -0
- package/lib/test/behavior-fixture.model.js.map +1 -0
- package/lib/test/legacyident.fixture.model.d.ts +98 -0
- package/lib/test/legacyident.fixture.model.d.ts.map +1 -0
- package/lib/test/legacyident.fixture.model.js +125 -0
- package/lib/test/legacyident.fixture.model.js.map +1 -0
- package/lib/test/objects.d.ts +2 -2
- package/lib/test/objects.d.ts.map +1 -1
- package/lib/test/objects.js +2 -2
- package/lib/test/objects.js.map +1 -1
- package/package.json +32 -11
- package/test/config-cached.json +2 -1
- package/test/config.json +3 -1
- package/test/my-cnf.json +1 -1
- package/webda.module.json +656 -390
- package/lib/services/authentication.service.d.ts +0 -442
- package/lib/services/authentication.service.d.ts.map +0 -1
- package/lib/services/authentication.service.js +0 -932
- package/lib/services/authentication.service.js.map +0 -1
- package/lib/services/oauth.d.ts +0 -250
- package/lib/services/oauth.d.ts.map +0 -1
- package/lib/services/oauth.js +0 -405
- package/lib/services/oauth.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TransformCase } from "@webda/utils";
|
|
2
2
|
import { Service } from "./service.js";
|
|
3
3
|
import { OperationContext } from "../contexts/operationcontext.js";
|
|
4
|
+
import { UuidModel } from "@webda/models";
|
|
4
5
|
import { runWithContext, useContext } from "../contexts/execution.js";
|
|
5
6
|
import * as WebdaError from "../errors/errors.js";
|
|
6
7
|
import { ServiceParameters } from "../services/serviceparameters.js";
|
|
@@ -9,6 +10,137 @@ import { useModelMetadata } from "../core/hooks.js";
|
|
|
9
10
|
import { useInstanceStorage } from "../core/instancestorage.js";
|
|
10
11
|
import { registerOperation } from "../core/operations.js";
|
|
11
12
|
import { hasSchema, registerSchema } from "../schemas/hooks.js";
|
|
13
|
+
import { checkModelParent, checkModelPermission, checkStaticModelPermission, createModel, getParentRelation, hasModelPermissionCheck, hasStaticPermissionCheck, NOT_FOUND_MESSAGE, queryModelWithPermissions } from "../models/permissions.js";
|
|
14
|
+
/**
|
|
15
|
+
* Sanitize client input before it reaches a model (REST, gRPC, MCP and GraphQL):
|
|
16
|
+
* - `__`-prefixed (private) keys are removed at any depth;
|
|
17
|
+
* - `_`-prefixed attributes are removed, unless the model lists them in its static `getClientWritableAttributes()`:
|
|
18
|
+
* by convention they are server-managed (`_user`, `_roles`, `_groups`, `_creationDate`...);
|
|
19
|
+
* - Behavior-typed attributes (Metadata.Relations.behaviors) are removed: behavior state can only be changed through
|
|
20
|
+
* the behavior's own actions;
|
|
21
|
+
* - the attributes of the model's static `getProtectedAttributes()` are removed, even when listed as writable;
|
|
22
|
+
* - the attributes the model schemas mark `readOnly` (`@readOnly` on the property) are removed: they are server-managed.
|
|
23
|
+
* @param model - the model class
|
|
24
|
+
* @param input - the client input
|
|
25
|
+
* @returns the sanitized input
|
|
26
|
+
*/
|
|
27
|
+
export function sanitizeModelInput(model, input) {
|
|
28
|
+
const out = stripPrivateFields(input);
|
|
29
|
+
if (!out || typeof out !== "object" || Array.isArray(out)) {
|
|
30
|
+
return out;
|
|
31
|
+
}
|
|
32
|
+
const writable = getClientWritableAttributes(model);
|
|
33
|
+
const removed = new Set([
|
|
34
|
+
...getReadOnlyAttributes(model),
|
|
35
|
+
...(useModelMetadata(model)?.Relations?.behaviors ?? []).map(rel => rel.attribute),
|
|
36
|
+
// Server-managed attributes (e.g. the owner of an OwnerModel) are never taken from client input
|
|
37
|
+
...getProtectedAttributes(model)
|
|
38
|
+
]);
|
|
39
|
+
// Object.fromEntries defines own properties: no client-chosen key is ever written or deleted dynamically
|
|
40
|
+
return Object.fromEntries(Object.entries(out).filter(([key]) => !removed.has(key) && (!key.startsWith("_") || writable.includes(key))));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* `_`-prefixed attributes a model accepts from client input, declared by its optional static
|
|
44
|
+
* `getClientWritableAttributes()`
|
|
45
|
+
* @param model - the model class
|
|
46
|
+
* @returns the attribute names
|
|
47
|
+
*/
|
|
48
|
+
export function getClientWritableAttributes(model) {
|
|
49
|
+
return typeof model?.getClientWritableAttributes === "function" ? (model.getClientWritableAttributes() ?? []) : [];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Client input of a create (REST, gRPC, MCP and GraphQL): {@link sanitizeModelInput}, plus
|
|
53
|
+
* - the parent link (`ModelParent` attribute, from the nested URL or the input) is kept even when `_`-prefixed, unless
|
|
54
|
+
* protected: the caller must then check the parent ({@link checkModelParent});
|
|
55
|
+
* - a client `uuid` is dropped for `UuidModel`s: the key is always generated, so a create can neither target an
|
|
56
|
+
* existing object nor reveal that a uuid exists. Natural-key models keep the client key (an existing key is a 409).
|
|
57
|
+
* @param model - the model class
|
|
58
|
+
* @param input - the raw client input
|
|
59
|
+
* @returns the input to load in the new object
|
|
60
|
+
*/
|
|
61
|
+
export function prepareCreateInput(model, input) {
|
|
62
|
+
const parent = getParentRelation(model);
|
|
63
|
+
const parentId = parent && !getProtectedAttributes(model).includes(parent.attribute)
|
|
64
|
+
? input?.[parent.attribute]
|
|
65
|
+
: undefined;
|
|
66
|
+
const out = sanitizeModelInput(model, input);
|
|
67
|
+
if (!out || typeof out !== "object" || Array.isArray(out)) {
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
if (parentId !== undefined && parentId !== null && parentId !== "") {
|
|
71
|
+
out[parent.attribute] = parentId;
|
|
72
|
+
}
|
|
73
|
+
if (model?.prototype instanceof UuidModel) {
|
|
74
|
+
delete out.uuid;
|
|
75
|
+
}
|
|
76
|
+
return out;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Attributes the model schemas (Input, Output, Stored) mark `readOnly`: server-managed, never taken from client input
|
|
80
|
+
* @param model - the model class
|
|
81
|
+
* @returns the attribute names
|
|
82
|
+
*/
|
|
83
|
+
export function getReadOnlyAttributes(model) {
|
|
84
|
+
let schemas;
|
|
85
|
+
try {
|
|
86
|
+
schemas = useModelMetadata(model)?.Schemas;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
const names = new Set();
|
|
92
|
+
for (const schema of Object.values(schemas ?? {})) {
|
|
93
|
+
for (const [name, property] of Object.entries(schema?.properties ?? {})) {
|
|
94
|
+
if (property?.readOnly === true || property?.readonly === true) {
|
|
95
|
+
names.add(name);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return [...names];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Attributes a model refuses from client input, declared by its optional static `getProtectedAttributes()`
|
|
103
|
+
* @param model - the model class
|
|
104
|
+
* @returns the attribute names
|
|
105
|
+
*/
|
|
106
|
+
export function getProtectedAttributes(model) {
|
|
107
|
+
return typeof model?.getProtectedAttributes === "function" ? (model.getProtectedAttributes() ?? []) : [];
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Remove `__`-prefixed keys at any depth from client-supplied input, so private fields
|
|
111
|
+
* (such as a password hash) can never be set through the REST/operations surface
|
|
112
|
+
* @param input - the client input
|
|
113
|
+
* @returns a sanitized deep copy (non plain-object/array values are returned as is)
|
|
114
|
+
*/
|
|
115
|
+
export function stripPrivateFields(input) {
|
|
116
|
+
if (Array.isArray(input)) {
|
|
117
|
+
return input.map(i => stripPrivateFields(i));
|
|
118
|
+
}
|
|
119
|
+
if (input && typeof input === "object" && Object.getPrototypeOf(input) === Object.prototype) {
|
|
120
|
+
// Object.fromEntries defines own properties: no dynamic assignment can reach a prototype
|
|
121
|
+
return Object.fromEntries(Object.entries(input)
|
|
122
|
+
.filter(([k]) => !k.startsWith("__") && k !== "constructor" && k !== "prototype")
|
|
123
|
+
.map(([k, v]) => [k, stripPrivateFields(v)]));
|
|
124
|
+
}
|
|
125
|
+
return input;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Models that hold authentication state: never exposed by a DomainService (REST, GraphQL, operations), nor any of
|
|
129
|
+
* their subclasses, unless explicitly listed in its `models` parameter
|
|
130
|
+
*/
|
|
131
|
+
export const INTERNAL_MODELS = ["Webda/Ident", "Webda/RefreshToken"];
|
|
132
|
+
/**
|
|
133
|
+
* @param model - a model class
|
|
134
|
+
* @returns true when the model is, or descends from, one of {@link INTERNAL_MODELS}
|
|
135
|
+
*/
|
|
136
|
+
export function isInternalModel(model) {
|
|
137
|
+
for (let clazz = model; clazz && clazz !== Function.prototype; clazz = Object.getPrototypeOf(clazz)) {
|
|
138
|
+
if (INTERNAL_MODELS.includes(clazz.Metadata?.Identifier)) {
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
12
144
|
/** Parameters for DomainService, controlling model exposure, URL naming, and query methods */
|
|
13
145
|
export class DomainServiceParameters extends ServiceParameters {
|
|
14
146
|
/**
|
|
@@ -70,6 +202,14 @@ export class DomainServiceParameters extends ServiceParameters {
|
|
|
70
202
|
isIncluded(model) {
|
|
71
203
|
return !this.isExcluded(model) && (this.models.includes("*") || this.models.includes(model));
|
|
72
204
|
}
|
|
205
|
+
/**
|
|
206
|
+
* Is a model explicitly listed (not through the wildcard) in `models`
|
|
207
|
+
* @param model - the model identifier
|
|
208
|
+
* @returns the result
|
|
209
|
+
*/
|
|
210
|
+
isExplicitlyIncluded(model) {
|
|
211
|
+
return !this.isExcluded(model) && this.models.includes(model);
|
|
212
|
+
}
|
|
73
213
|
/**
|
|
74
214
|
* Is a model excluded from the service
|
|
75
215
|
* @param model - the model to use
|
|
@@ -142,10 +282,33 @@ export class DomainService extends Service {
|
|
|
142
282
|
context,
|
|
143
283
|
uuid: typeof uuid === "string" ? uuid : JSON.stringify(uuid)
|
|
144
284
|
});
|
|
145
|
-
throw new WebdaError.NotFound(
|
|
285
|
+
throw new WebdaError.NotFound(NOT_FOUND_MESSAGE);
|
|
146
286
|
}
|
|
147
287
|
return object;
|
|
148
288
|
}
|
|
289
|
+
/**
|
|
290
|
+
* {@link checkModelPermission}, emitting `Store.WebNotFound` when the refusal looks like a missing object, exactly
|
|
291
|
+
* like {@link loadModel} does for a missing key
|
|
292
|
+
* @param object - the model instance
|
|
293
|
+
* @param context - the caller context
|
|
294
|
+
* @param action - the action
|
|
295
|
+
* @param model - the model class (the static `canAct` asked)
|
|
296
|
+
*/
|
|
297
|
+
async checkPermission(object, context, action, model) {
|
|
298
|
+
try {
|
|
299
|
+
await checkModelPermission(object, context, action, model);
|
|
300
|
+
}
|
|
301
|
+
catch (err) {
|
|
302
|
+
if (err instanceof WebdaError.NotFound) {
|
|
303
|
+
const uuid = object.getPrimaryKey?.();
|
|
304
|
+
await this.emit("Store.WebNotFound", {
|
|
305
|
+
context,
|
|
306
|
+
uuid: typeof uuid === "string" ? uuid : JSON.stringify(uuid)
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
throw err;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
149
312
|
/**
|
|
150
313
|
* Create a model operation implementation
|
|
151
314
|
* @param input - the model data to create
|
|
@@ -161,14 +324,82 @@ export class DomainService extends Service {
|
|
|
161
324
|
if (typeof input !== "object" || input === null || input instanceof OperationContext) {
|
|
162
325
|
input = await context.getInput();
|
|
163
326
|
}
|
|
327
|
+
input = prepareCreateInput(model, input);
|
|
164
328
|
return runWithContext(context, async () => {
|
|
165
329
|
// Instantiate the model from raw input, load data, then save
|
|
166
330
|
const object = new model();
|
|
167
331
|
object.load(input);
|
|
168
|
-
|
|
332
|
+
// The parent link (nested URL or input) must point to a parent the caller may read
|
|
333
|
+
await this.checkParent(model, input?.[getParentRelation(model)?.attribute ?? ""], context);
|
|
334
|
+
// Let the model set its server-managed fields (e.g. the owner) from the caller
|
|
335
|
+
await object.prepareCreate?.(context);
|
|
336
|
+
await this.checkPermission(object, context, "create", model);
|
|
337
|
+
// Create, never upsert: an existing key is a 409, not an overwrite
|
|
338
|
+
await createModel(object);
|
|
169
339
|
return object;
|
|
170
340
|
});
|
|
171
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* {@link checkModelParent}, emitting `Store.WebNotFound` when the parent is missing or unreadable, like any missing
|
|
344
|
+
* object
|
|
345
|
+
* @param model - the child model class
|
|
346
|
+
* @param parentId - the parent primary key
|
|
347
|
+
* @param context - the caller context
|
|
348
|
+
*/
|
|
349
|
+
async checkParent(model, parentId, context) {
|
|
350
|
+
try {
|
|
351
|
+
await checkModelParent(model, parentId, context);
|
|
352
|
+
}
|
|
353
|
+
catch (err) {
|
|
354
|
+
if (err instanceof WebdaError.NotFound) {
|
|
355
|
+
await this.emit("Store.WebNotFound", {
|
|
356
|
+
context,
|
|
357
|
+
uuid: typeof parentId === "string" ? parentId : JSON.stringify(parentId)
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
throw err;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Resolve the primary key of an update or patch: the URL parameters win over the body, and a body carrying another
|
|
365
|
+
* key is refused, so an update can never be redirected to another object
|
|
366
|
+
* @param input - the sanitized input, its primary-key fields are removed
|
|
367
|
+
* @param pkFields - the primary-key fields
|
|
368
|
+
* @param params - the URL parameters
|
|
369
|
+
* @returns the primary key
|
|
370
|
+
* @throws BadRequest when the body key differs from the URL key
|
|
371
|
+
*/
|
|
372
|
+
resolveUpdateKey(input, pkFields, params) {
|
|
373
|
+
const fields = pkFields?.length ? pkFields : ["uuid"];
|
|
374
|
+
const key = {};
|
|
375
|
+
for (const f of fields) {
|
|
376
|
+
const fromUrl = params[f];
|
|
377
|
+
const fromBody = input?.[f];
|
|
378
|
+
if (fromUrl !== undefined && fromBody !== undefined && String(fromUrl) !== String(fromBody)) {
|
|
379
|
+
throw new WebdaError.BadRequest("Primary key mismatch");
|
|
380
|
+
}
|
|
381
|
+
key[f] = fromUrl ?? fromBody;
|
|
382
|
+
if (input && typeof input === "object") {
|
|
383
|
+
delete input[f];
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return fields.length === 1 ? key[fields[0]] : key;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* When an update moves an object to another parent, the caller must be able to read the new parent
|
|
390
|
+
* @param model - the model class
|
|
391
|
+
* @param object - the stored object
|
|
392
|
+
* @param input - the sanitized input
|
|
393
|
+
* @param context - the caller context
|
|
394
|
+
*/
|
|
395
|
+
async checkReparent(model, object, input, context) {
|
|
396
|
+
const parent = getParentRelation(model);
|
|
397
|
+
const value = parent ? input?.[parent.attribute] : undefined;
|
|
398
|
+
if (value === undefined || value === null || String(value) === String(object[parent.attribute] ?? "")) {
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
await this.checkParent(model, value, context);
|
|
402
|
+
}
|
|
172
403
|
/**
|
|
173
404
|
* Update a model operation implementation
|
|
174
405
|
* @param uuid - the model primary key
|
|
@@ -184,18 +415,16 @@ export class DomainService extends Service {
|
|
|
184
415
|
if (typeof input !== "object" || input === null) {
|
|
185
416
|
input = await context.getInput();
|
|
186
417
|
}
|
|
187
|
-
|
|
418
|
+
input = sanitizeModelInput(model, input);
|
|
419
|
+
// Resolve the PK from the URL params (or the body) using the model's actual PK fields;
|
|
188
420
|
// fall back to "uuid" for legacy operations without pkFields in the context.
|
|
189
|
-
const
|
|
190
|
-
const fields = pkFields?.length ? pkFields : ["uuid"];
|
|
191
|
-
const pk = fields.length === 1
|
|
192
|
-
? input?.[fields[0]] ?? params[fields[0]]
|
|
193
|
-
: fields.reduce((acc, f) => {
|
|
194
|
-
acc[f] = input?.[f] ?? params[f];
|
|
195
|
-
return acc;
|
|
196
|
-
}, {});
|
|
421
|
+
const pk = this.resolveUpdateKey(input, pkFields, context.getParameters() ?? {});
|
|
197
422
|
const object = await this.loadModel(model, pk);
|
|
423
|
+
// Check on the stored object, before any client input is applied
|
|
424
|
+
await this.checkPermission(object, context, "update", model);
|
|
425
|
+
await this.checkReparent(model, object, input, context);
|
|
198
426
|
object["load"](input);
|
|
427
|
+
await object.save();
|
|
199
428
|
return object;
|
|
200
429
|
}
|
|
201
430
|
/**
|
|
@@ -207,7 +436,7 @@ export class DomainService extends Service {
|
|
|
207
436
|
const context = useContext();
|
|
208
437
|
const { model } = context.getExtension("operationContext");
|
|
209
438
|
const object = await this.loadModel(model, uuid);
|
|
210
|
-
|
|
439
|
+
await this.checkPermission(object, context, "get", model);
|
|
211
440
|
return object;
|
|
212
441
|
}
|
|
213
442
|
/**
|
|
@@ -218,7 +447,7 @@ export class DomainService extends Service {
|
|
|
218
447
|
const context = useContext();
|
|
219
448
|
const { model } = context.getExtension("operationContext");
|
|
220
449
|
const object = await this.loadModel(model, uuid);
|
|
221
|
-
|
|
450
|
+
await this.checkPermission(object, context, "delete", model);
|
|
222
451
|
// Object can decide to not delete but mark as deleted
|
|
223
452
|
await object.delete();
|
|
224
453
|
}
|
|
@@ -230,9 +459,12 @@ export class DomainService extends Service {
|
|
|
230
459
|
async modelQuery(query) {
|
|
231
460
|
const context = useContext();
|
|
232
461
|
const { model } = context.getExtension("operationContext");
|
|
462
|
+
if (query !== undefined && query !== null && typeof query !== "string") {
|
|
463
|
+
throw new WebdaError.BadRequest("Query must be a string");
|
|
464
|
+
}
|
|
233
465
|
return runWithContext(context, async () => {
|
|
234
466
|
try {
|
|
235
|
-
return await model
|
|
467
|
+
return await queryModelWithPermissions(model, query, context);
|
|
236
468
|
}
|
|
237
469
|
catch (err) {
|
|
238
470
|
if (err instanceof SyntaxError) {
|
|
@@ -255,16 +487,13 @@ export class DomainService extends Service {
|
|
|
255
487
|
if (typeof input !== "object" || input === null) {
|
|
256
488
|
input = await context.getInput();
|
|
257
489
|
}
|
|
490
|
+
input = sanitizeModelInput(model, input);
|
|
258
491
|
// Build the PK from the model's real primary-key fields (same logic as modelUpdate).
|
|
259
|
-
const
|
|
260
|
-
const fields = pkFields?.length ? pkFields : ["uuid"];
|
|
261
|
-
const pk = fields.length === 1
|
|
262
|
-
? input?.[fields[0]] ?? params[fields[0]]
|
|
263
|
-
: fields.reduce((acc, f) => {
|
|
264
|
-
acc[f] = input?.[f] ?? params[f];
|
|
265
|
-
return acc;
|
|
266
|
-
}, {});
|
|
492
|
+
const pk = this.resolveUpdateKey(input, pkFields, context.getParameters() ?? {});
|
|
267
493
|
const object = await this.loadModel(model, pk);
|
|
494
|
+
// Check on the stored object, before any client input is applied
|
|
495
|
+
await this.checkPermission(object, context, "update", model);
|
|
496
|
+
await this.checkReparent(model, object, input, context);
|
|
268
497
|
await object.patch(input);
|
|
269
498
|
return object;
|
|
270
499
|
}
|
|
@@ -281,17 +510,36 @@ export class DomainService extends Service {
|
|
|
281
510
|
if (!action.global) {
|
|
282
511
|
// First arg is uuid when the action is instance-level
|
|
283
512
|
const uuid = args[0];
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
}
|
|
288
|
-
//await object.checkAct(context, action.name as ActionsEnum<Model>);
|
|
513
|
+
// A missing object and an object the caller cannot read answer the same NotFound
|
|
514
|
+
const object = await this.loadModel(model, uuid);
|
|
515
|
+
await this.checkPermission(object, context, action.name, model);
|
|
289
516
|
return object[handler](context);
|
|
290
517
|
}
|
|
291
518
|
else {
|
|
292
|
-
|
|
519
|
+
// Static action: the model's static canAct is asked without object
|
|
520
|
+
await checkStaticModelPermission(model, context, action.name);
|
|
521
|
+
// With an input schema the arguments are resolved from it (`callOperation`); without one the body is passed,
|
|
522
|
+
// sanitized like model input (`__`, `_`, protected and read-only attributes removed); no body: the context
|
|
523
|
+
const resolved = args.length > 0 && !(args[0] instanceof OperationContext);
|
|
524
|
+
const hasSchema = !!useApplication().getSchema(`${useModelMetadata(model)?.Identifier}.${action.name}.input`);
|
|
525
|
+
const callArgs = resolved
|
|
526
|
+
? hasSchema
|
|
527
|
+
? args
|
|
528
|
+
: [sanitizeModelInput(model, args[0]), ...args.slice(1)]
|
|
529
|
+
: [context];
|
|
530
|
+
return model[handler](...callArgs);
|
|
293
531
|
}
|
|
294
532
|
}
|
|
533
|
+
/**
|
|
534
|
+
* Whether a model may be exposed: models of {@link INTERNAL_MODELS} and their subclasses need an explicit listing
|
|
535
|
+
* in the `models` parameter
|
|
536
|
+
* @param model - model class
|
|
537
|
+
* @param identifier - model identifier
|
|
538
|
+
* @returns true when the model may be exposed
|
|
539
|
+
*/
|
|
540
|
+
isExposable(model, identifier) {
|
|
541
|
+
return !isInternalModel(model) || this.parameters.isExplicitlyIncluded(identifier);
|
|
542
|
+
}
|
|
295
543
|
/**
|
|
296
544
|
* Add operations for all exposed models
|
|
297
545
|
* @returns the result
|
|
@@ -333,6 +581,20 @@ export class DomainService extends Service {
|
|
|
333
581
|
if (!this.app.isFinalModel(Metadata.Identifier)) {
|
|
334
582
|
continue;
|
|
335
583
|
}
|
|
584
|
+
// Authentication state models (and subclasses) are internal unless explicitly listed
|
|
585
|
+
if (!this.isExposable(model, Metadata.Identifier)) {
|
|
586
|
+
continue;
|
|
587
|
+
}
|
|
588
|
+
if (!hasModelPermissionCheck(model)) {
|
|
589
|
+
this.log("WARN", `${Metadata.Identifier} is exposed but denies every request: define static canAct (or the instance canAct)`);
|
|
590
|
+
}
|
|
591
|
+
else if (!hasStaticPermissionCheck(model)) {
|
|
592
|
+
// Instance form only: static actions are asked without object, so the base static refuses them all
|
|
593
|
+
const statics = Object.keys(Metadata.Actions ?? {}).filter(name => Metadata.Actions[name]?.global);
|
|
594
|
+
if (statics.length) {
|
|
595
|
+
this.log("WARN", `${Metadata.Identifier} defines only the instance canAct: its static actions (${statics.join(", ")}) are always refused, define static canAct`);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
336
598
|
const shortId = Metadata.Identifier.split("/").pop();
|
|
337
599
|
const plural = Metadata.Plural;
|
|
338
600
|
const modelSchema = modelKey;
|
|
@@ -555,28 +817,6 @@ export class DomainService extends Service {
|
|
|
555
817
|
async modelBehaviorAction(...args) {
|
|
556
818
|
const context = useContext();
|
|
557
819
|
const { model, attribute, action, behavior } = context.getExtension("operationContext");
|
|
558
|
-
// Parent uuid comes from the URL (`/posts/{uuid}/mainImage/...`); read it
|
|
559
|
-
// straight off the context so we don't depend on its position in `args`.
|
|
560
|
-
const uuid = (context.getParameters() || {}).uuid;
|
|
561
|
-
let instance;
|
|
562
|
-
try {
|
|
563
|
-
instance = await model.ref(uuid).get();
|
|
564
|
-
}
|
|
565
|
-
catch {
|
|
566
|
-
// Repositories (e.g. MemoryRepository) throw a plain Error when the
|
|
567
|
-
// primary key isn't in storage. Treat that the same as a "soft" miss.
|
|
568
|
-
}
|
|
569
|
-
if (!instance || instance.isDeleted?.()) {
|
|
570
|
-
throw new WebdaError.NotFound("Object not found");
|
|
571
|
-
}
|
|
572
|
-
const allowed = await instance.canAct(context, `${attribute}.${action}`);
|
|
573
|
-
if (allowed !== true && allowed !== instance) {
|
|
574
|
-
throw new WebdaError.Forbidden(`Action ${attribute}.${action} not allowed`);
|
|
575
|
-
}
|
|
576
|
-
const behaviorInstance = instance[attribute];
|
|
577
|
-
if (!behaviorInstance || typeof behaviorInstance[action] !== "function") {
|
|
578
|
-
throw new WebdaError.NotFound(`Behavior method ${attribute}.${action} not found`);
|
|
579
|
-
}
|
|
580
820
|
// `args` was built by `resolveArguments` from the operation's input
|
|
581
821
|
// schema. Two schema shapes coexist:
|
|
582
822
|
// 1. Auto-generated from the method signature (`exploreBehaviorsAction`
|
|
@@ -593,6 +833,19 @@ export class DomainService extends Service {
|
|
|
593
833
|
const inputSchema = typeof opInput === "string" ? useApplication().getSchema(opInput) : undefined;
|
|
594
834
|
const propNames = inputSchema?.properties ? Object.keys(inputSchema.properties) : [];
|
|
595
835
|
const passArgs = propNames[0] === "uuid" ? args.slice(1) : args;
|
|
836
|
+
// Parent uuid comes from the URL (`/posts/{uuid}/mainImage/...`) on REST; transports without URL parameters
|
|
837
|
+
// (gRPC, MCP) carry it in the input, as the uuidRequest schema declares
|
|
838
|
+
let uuid = (context.getParameters() || {}).uuid;
|
|
839
|
+
if (uuid === undefined) {
|
|
840
|
+
uuid = propNames[0] === "uuid" ? args[0] : (await context.getInput().catch(() => undefined))?.uuid;
|
|
841
|
+
}
|
|
842
|
+
// A missing parent and a parent the caller cannot read answer the same NotFound
|
|
843
|
+
const instance = await this.loadModel(model, uuid);
|
|
844
|
+
await this.checkPermission(instance, context, `${attribute}.${action}`, model);
|
|
845
|
+
const behaviorInstance = instance[attribute];
|
|
846
|
+
if (!behaviorInstance || typeof behaviorInstance[action] !== "function") {
|
|
847
|
+
throw new WebdaError.NotFound(`Behavior method ${attribute}.${action} not found`);
|
|
848
|
+
}
|
|
596
849
|
void behavior; // tagged in operationContext for future use
|
|
597
850
|
return behaviorInstance[action](...passArgs);
|
|
598
851
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domainservice.service.js","sourceRoot":"","sources":["../../src/services/domainservice.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhE,8FAA8F;AAC9F,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAC5D;;;;OAIG;IACH,UAAU,CAAW;IACrB;;;;;OAKG;IACH,cAAc,CAAqB;IACnC;;;;OAIG;IACH,WAAW,CAAiB;IAC5B;;;;;;OAMG;IACH,MAAM,CAAY;IAClB;;;OAGG;IACK,cAAc,CAAW;IAEjC;;;;OAIG;IACH,IAAI,CAAC,MAAM,GAAQ,EAAE;QACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,oBAAoB;QACpB,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;QACzB,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC;QACpC,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,yDAAyD;QACzD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,KAAa;QACtB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF;AAKD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,aAGX,SAAQ,OAAa;IACrB,GAAG,CAAc;IACjB,MAAM,CAAC,OAAO,GAAG;QACf,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;iBACf;aACF;SACF;KACF,CAAC;IAEF;;;;;;OAMG;IACH,aAAa,CAAC,IAAY;QACxB,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,SAAS,CAAC,KAAwB,EAAE,IAAkC;QAClF,IAAI,MAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC,GAAG,EAAE,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;QACxD,CAAC;QACD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;YAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACnC,OAAO;gBACP,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC7D,CAAC,CAAC;YACH,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,KAAU;QAC1B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,YAAY,CAA+B,kBAAkB,CAAC,CAAC;QACzF,+EAA+E;QAC/E,kFAAkF;QAClF,2EAA2E;QAC3E,kFAAkF;QAClF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACrF,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,cAAc,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACxC,6DAA6D;YAC7D,MAAM,MAAM,GAAG,IAAK,KAAa,EAAW,CAAC;YAC5C,MAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,KAAW;QAC3B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAG7C,kBAAkB,CAAC,CAAC;QACvB,2EAA2E;QAC3E,uEAAuE;QACvE,0DAA0D;QAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;QACD,6EAA6E;QAC7E,6EAA6E;QAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,EAAE,GACN,MAAM,CAAC,MAAM,KAAK,CAAC;YACjB,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACvB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjC,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAA6B,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,YAAY,CAA+B,kBAAkB,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjD,wCAAwC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,YAAY,CAA+B,kBAAkB,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjD,2CAA2C;QAC3C,sDAAsD;QACtD,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,KAAa;QAC5B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,YAAY,CAAwB,kBAAkB,CAAC,CAAC;QAClF,OAAO,cAAc,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACxC,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;oBAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;oBACvC,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;gBACxD,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,KAAW;QAC1B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAG7C,kBAAkB,CAAC,CAAC;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;QACD,qFAAqF;QACrF,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,EAAE,GACN,MAAM,CAAC,MAAM,KAAK,CAAC;YACjB,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACvB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjC,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAA6B,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,GAAG,IAAW;QAC9B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAG3C,kBAAkB,CAAC,CAAC;QACvB,+DAA+D;QAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,sDAAsD;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;gBAClC,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YACpD,CAAC;YACD,oEAAoE;YACpE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAsB,cAAc,EAAG,CAAC,CAAC;QAE9D,iEAAiE;QACjE,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,0DAA0D;QAC1D,iEAAiE;QACjE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,UAAU,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/B,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,SAAS;YACX,CAAC;YACD,sCAAsC;YACtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrD,SAAS;YACX,CAAC;YAED,sCAAsC;YACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChD,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,WAAW,GAAG,QAAQ,CAAC;YAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAElD,0CAA0C;YAC1C,MAAM,YAAY,GAAG,GAAG,QAAQ,aAAa,CAAC;YAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC7E,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAClD,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7B,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC;YACD,sGAAsG;YACtG,UAAU,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC;YAEtC,2CAA2C;YAC3C,MAAM,qBAAqB,GAAG,GAAG,QAAQ,cAAc,CAAC;YACxD,MAAM,iBAAiB,GAAQ;gBAC7B,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACrC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAiB,QAAQ,EAAE,EAAE,EAAE;iBACzE;aACF,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBACtC,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;YAC3D,CAAC;YACD,UAAU,CAAC,qBAAqB,CAAC,KAAK,iBAAiB,CAAC;YAExD,kEAAkE;YAClE,0EAA0E;YAC1E,yEAAyE;YACzE,kEAAkE;YAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE7D,kBAAkB;YAClB,CAAC,QAAQ,EAAE,QAAQ,CAAC;iBACjB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACrC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACX,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,EAAE,GAAG,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC7B,iBAAiB,CAAC,EAAE,EAAE;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa;oBACtD,KAAK,EAAE,WAAW,GAAG,GAAG;oBACxB,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE;oBAC3E,IAAI,EAAE,CAAC,OAAO,CAAC;oBACf,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;oBACrF,OAAO,EAAE;wBACP,KAAK;wBACL,QAAQ;qBACT;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACL,CAAC,QAAQ,EAAE,KAAK,CAAC;iBACd,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACrC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACX,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,EAAE,GAAG,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC7B,iBAAiB,CAAC,EAAE,EAAE;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,QAAQ,CAAC,EAAE;oBACnB,KAAK,EAAE,YAAY;oBACnB,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;oBAC1C,OAAO,EAAE,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,MAAM,OAAO,EAAE;oBACjE,IAAI,EAAE,CAAC,OAAO,CAAC;oBACf,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;oBACjE,OAAO,EAAE;wBACP,KAAK;wBACL,QAAQ;qBACT;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACL,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAE,GAAG,GAAG,MAAM,QAAQ,CAAC;gBAC7B,iBAAiB,CAAC,EAAE,EAAE;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,eAAe;oBACtB,MAAM,EAAE,qBAAqB;oBAC7B,OAAO,EAAE,SAAS,MAAM,EAAE;oBAC1B,IAAI,EAAE,CAAC,OAAO,CAAC;oBACf,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAmB,EAAE,IAAI,EAAE,EAAE,EAAE;oBACtF,OAAO,EAAE;wBACP,KAAK;qBACN;iBACF,CAAC,CAAC;YACL,CAAC;YACD,YAAY;YACZ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,MAAM,EAAE,GAAG,GAAG,OAAO,QAAQ,CAAC;gBAC9B,iBAAiB,CAAC,EAAE,EAAE;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,WAAW,GAAG,GAAG;oBACxB,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,WAAW,OAAO,EAAE;oBAC7B,IAAI,EAAE,CAAC,OAAO,CAAC;oBACf,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;oBACvC,OAAO,EAAE;wBACP,KAAK;wBACL,QAAQ;qBACT;iBACF,CAAC,CAAC;YACL,CAAC;YACD,iCAAiC;YACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;iBACjB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACxE,OAAO,CAAC,IAAI,CAAC,EAAE;gBACd,MAAM,EAAE,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClF,MAAM,IAAI,GAAQ;oBAChB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,aAAa;oBACrB,EAAE;iBACH,CAAC;gBACF,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChF,IAAI,CAAC,MAAM,GAAG,GAAG,QAAQ,IAAI,IAAI,SAAS,CAAC;gBAC3C,IAAI,CAAC,OAAO,GAAG;oBACb,KAAK;oBACL,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;iBACnC,CAAC;gBACF,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC;gBACzF,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,CAAC,IAAI,GAAG;oBACV,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE;oBACrD,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE;iBACrD,CAAC;gBACF,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,qBAAqB,CAAC,KAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,qBAAqB,CAAC,KAAwB,EAAE,QAAa,EAAE,IAAY;QACzE,MAAM,GAAG,GAAG,cAAc,EAAe,CAAC;QAC1C,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,WAAoD,EAAE,EAAE;YACrG,MAAM,YAAY,GAAG,GAAG,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACnE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,MAAM,YAAY,GAChB,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3F,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC3D,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrF,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;gBAClD,MAAM,WAAW,GAAG,GAAG,WAAW,CAAC,QAAQ,IAAI,UAAU,QAAQ,CAAC;gBAClE,MAAM,YAAY,GAAG,GAAG,WAAW,CAAC,QAAQ,IAAI,UAAU,SAAS,CAAC;gBACpE,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAClE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAC7B,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAiD,CAAC;gBACvG,IAAI,IAAY,CAAC;gBACjB,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;oBAClB,IAAI,GAAG,UAAU,WAAW,CAAC,SAAS,EAAE,CAAC;gBAC3C,CAAC;qBAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;oBAC/C,IAAI,GAAG,UAAU,WAAW,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,UAAU,WAAW,CAAC,SAAS,IAAI,UAAU,EAAE,CAAC;gBACzD,CAAC;gBACD,iBAAiB,CAAC,EAAE,EAAE;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,qBAAqB;oBAC7B,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;oBAC3D,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;oBACvD,OAAO,EAAE,GAAG,SAAS,OAAO,IAAI,IAAI,WAAW,CAAC,SAAS,EAAE;oBAC3D,IAAI,EAAE,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE;wBACJ,MAAM;wBACN,IAAI;qBACL;oBACD,OAAO,EAAE;wBACP,KAAK;wBACL,SAAS,EAAE,WAAW,CAAC,SAAS;wBAChC,QAAQ,EAAE,WAAW,CAAC,QAAQ;wBAC9B,MAAM,EAAE,UAAU;qBACnB;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,mBAAmB,CAAC,GAAG,IAAW;QACtC,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAKhE,kBAAkB,CAAC,CAAC;QAEvB,0EAA0E;QAC1E,yEAAyE;QACzE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QAClD,IAAI,QAAa,CAAC;QAClB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,sEAAsE;QACxE,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC;QACzE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC7C,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,UAAU,SAAS,IAAI,MAAM,cAAc,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,IAAI,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;YACxE,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,SAAS,IAAI,MAAM,YAAY,CAAC,CAAC;QACpF,CAAC;QAED,oEAAoE;QACpE,qCAAqC;QACrC,0EAA0E;QAC1E,sEAAsE;QACtE,iDAAiD;QACjD,uEAAuE;QACvE,uEAAuE;QACvE,wCAAwC;QACxC,uEAAuE;QACvE,iEAAiE;QACjE,0BAA0B;QAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAS,WAAW,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAChG,MAAM,WAAW,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClG,MAAM,SAAS,GAAG,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhE,KAAK,QAAQ,CAAC,CAAC,4CAA4C;QAC3D,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC/C,CAAC;CAEF"}
|
|
1
|
+
{"version":3,"file":"domainservice.service.js","sourceRoot":"","sources":["../../src/services/domainservice.service.ts"],"names":[],"mappings":"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"}
|