@webda/models 4.0.0-beta.4 → 4.0.0-beta.6
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/aggregation.d.ts +81 -0
- package/lib/aggregation.d.ts.map +1 -0
- package/lib/aggregation.js +2 -0
- package/lib/aggregation.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/model.model.d.ts +39 -0
- package/lib/model.model.d.ts.map +1 -1
- package/lib/model.model.js +24 -0
- package/lib/model.model.js.map +1 -1
- package/lib/repositories/abstract.d.ts +121 -1
- package/lib/repositories/abstract.d.ts.map +1 -1
- package/lib/repositories/abstract.js +297 -0
- package/lib/repositories/abstract.js.map +1 -1
- package/lib/repositories/conformance.d.ts +27 -0
- package/lib/repositories/conformance.d.ts.map +1 -1
- package/lib/repositories/conformance.js +285 -0
- package/lib/repositories/conformance.js.map +1 -1
- package/lib/repositories/event.d.ts +35 -1
- package/lib/repositories/event.d.ts.map +1 -1
- package/lib/repositories/event.js +48 -0
- package/lib/repositories/event.js.map +1 -1
- package/lib/repositories/hooks.d.ts +15 -2
- package/lib/repositories/hooks.d.ts.map +1 -1
- package/lib/repositories/hooks.js +14 -0
- package/lib/repositories/hooks.js.map +1 -1
- package/lib/repositories/memory.d.ts +34 -1
- package/lib/repositories/memory.d.ts.map +1 -1
- package/lib/repositories/memory.js +75 -2
- package/lib/repositories/memory.js.map +1 -1
- package/lib/repositories/repository.d.ts +57 -1
- package/lib/repositories/repository.d.ts.map +1 -1
- package/lib/repositories/repository.js.map +1 -1
- package/package.json +9 -8
|
@@ -21,6 +21,10 @@ export class AbstractRepository {
|
|
|
21
21
|
this.separator = separator;
|
|
22
22
|
/** Registered event listeners keyed by event name */
|
|
23
23
|
this.events = new Map();
|
|
24
|
+
/** Aggregation fallback policy, set by the owning store through configureAggregation */
|
|
25
|
+
this.aggregationOptions = { fallback: "warn", maxGroups: 10000 };
|
|
26
|
+
/** Fallback shapes already warned about */
|
|
27
|
+
this.warnedAggregations = new Set();
|
|
24
28
|
/**
|
|
25
29
|
* Max-listeners hint kept for Node `EventEmitter` API compatibility. Not
|
|
26
30
|
* enforced — repositories use an unbounded `Set` per event.
|
|
@@ -42,6 +46,10 @@ export class AbstractRepository {
|
|
|
42
46
|
* @returns the model instance
|
|
43
47
|
*/
|
|
44
48
|
buildItem(data) {
|
|
49
|
+
// An instance of the model is stored as is: copying it would drop the fields held in accessors
|
|
50
|
+
if (data instanceof this.model) {
|
|
51
|
+
return data;
|
|
52
|
+
}
|
|
45
53
|
let input = data;
|
|
46
54
|
if (input && this.pks.some(k => k in input && (input[k] === undefined || input[k] === null))) {
|
|
47
55
|
input = { ...input };
|
|
@@ -220,6 +228,295 @@ export class AbstractRepository {
|
|
|
220
228
|
async incrementAttribute(primaryKey, info, _conditionField, _condition) {
|
|
221
229
|
await this.incrementAttributes(primaryKey, [info]);
|
|
222
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Field paths of the model, from its metadata (`Reflection` and the stored, input and output schemas)
|
|
233
|
+
*
|
|
234
|
+
* Used to validate UPDATE SET targets.
|
|
235
|
+
* @returns the field names, undefined when the model carries no field metadata (no validation then)
|
|
236
|
+
*/
|
|
237
|
+
getAllowedFields() {
|
|
238
|
+
const meta = this.model?.Metadata;
|
|
239
|
+
const fields = new Set([
|
|
240
|
+
...Object.keys(meta?.Reflection ?? {}),
|
|
241
|
+
...Object.keys(meta?.Schemas?.Stored?.properties ?? {}),
|
|
242
|
+
...Object.keys(meta?.Schemas?.Input?.properties ?? {}),
|
|
243
|
+
...Object.keys(meta?.Schemas?.Output?.properties ?? {})
|
|
244
|
+
]);
|
|
245
|
+
return fields.size ? [...fields] : undefined;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Parse a bulk statement and check it is of the expected type
|
|
249
|
+
*
|
|
250
|
+
* For an UPDATE, every SET target is checked: no primary key field, no private (`__`) segment, no
|
|
251
|
+
* `constructor`/`prototype` segment, and a field of the model when its metadata lists them.
|
|
252
|
+
* @param type - the expected statement type
|
|
253
|
+
* @param statement - the statement string or its parsed form
|
|
254
|
+
* @param params - values for the placeholders of a statement string
|
|
255
|
+
* @returns the parsed statement
|
|
256
|
+
* @throws WebdaQLError when the statement has another type or a SET target is refused
|
|
257
|
+
* @throws SyntaxError when the statement does not parse, or a SET target is not a field of the model
|
|
258
|
+
*/
|
|
259
|
+
async parseStatement(type, statement, params) {
|
|
260
|
+
const WebdaQL = await import("@webda/ql");
|
|
261
|
+
let parsed;
|
|
262
|
+
if (typeof statement === "string") {
|
|
263
|
+
parsed = WebdaQL.parse(params !== undefined ? WebdaQL.bind(statement, params) : statement);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
if (params !== undefined) {
|
|
267
|
+
throw new WebdaQL.WebdaQLError("Parameters can only be bound to a statement string");
|
|
268
|
+
}
|
|
269
|
+
// A query object built or changed by code goes back through the grammar: no forged path, operator or value
|
|
270
|
+
// reaches a backend
|
|
271
|
+
parsed = WebdaQL.normalizeQuery(statement);
|
|
272
|
+
}
|
|
273
|
+
if (parsed.type !== type) {
|
|
274
|
+
throw new WebdaQL.WebdaQLError(`${type === "DELETE" ? "deleteMany needs a" : "updateMany needs an"} ${type} statement, not ${parsed.type ?? "a filter"}`);
|
|
275
|
+
}
|
|
276
|
+
if (type === "UPDATE") {
|
|
277
|
+
if (!parsed.assignments?.length) {
|
|
278
|
+
throw new WebdaQL.WebdaQLError("UPDATE needs at least one SET assignment");
|
|
279
|
+
}
|
|
280
|
+
const targets = parsed.assignments.map(a => a.field);
|
|
281
|
+
for (const field of targets) {
|
|
282
|
+
const segments = field.split(".");
|
|
283
|
+
if (segments.some(s => !/^[A-Za-z0-9_]+$/.test(s))) {
|
|
284
|
+
throw new WebdaQL.WebdaQLError(`UPDATE cannot set the field '${field}': empty or invalid path segment`);
|
|
285
|
+
}
|
|
286
|
+
if (this.pks.includes(segments[0])) {
|
|
287
|
+
throw new WebdaQL.WebdaQLError(`UPDATE cannot change the primary key field '${field}'`);
|
|
288
|
+
}
|
|
289
|
+
if (segments.some(s => s.startsWith("__") || s in Object.prototype || s === "prototype")) {
|
|
290
|
+
throw new WebdaQL.WebdaQLError(`UPDATE cannot set the private field '${field}'`);
|
|
291
|
+
}
|
|
292
|
+
// The same field twice, or a field and one of its children: the result would depend on the store
|
|
293
|
+
if (targets.some(other => other !== field && other.startsWith(`${field}.`)) ||
|
|
294
|
+
targets.indexOf(field) !== targets.lastIndexOf(field)) {
|
|
295
|
+
throw new WebdaQL.WebdaQLError(`UPDATE sets '${field}' more than once`);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
const allowed = this.getAllowedFields();
|
|
299
|
+
if (allowed) {
|
|
300
|
+
WebdaQL.validateQueryFields(parsed, allowed);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return parsed;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Set the assignments of an UPDATE on an object, creating the intermediate objects of dotted paths
|
|
307
|
+
*
|
|
308
|
+
* Targets were checked by {@link parseStatement}: letters, digits and `_` only, no `__` segment, no
|
|
309
|
+
* `Object.prototype` member name.
|
|
310
|
+
* @param target - the object to change in place
|
|
311
|
+
* @param assignments - the SET assignments
|
|
312
|
+
* @returns the target
|
|
313
|
+
*/
|
|
314
|
+
applyAssignments(target, assignments) {
|
|
315
|
+
for (const { field, value } of assignments) {
|
|
316
|
+
const segments = field.split(".");
|
|
317
|
+
let current = target;
|
|
318
|
+
for (const segment of segments.slice(0, -1)) {
|
|
319
|
+
if (current[segment] === null || typeof current[segment] !== "object") {
|
|
320
|
+
current[segment] = {};
|
|
321
|
+
}
|
|
322
|
+
current = current[segment];
|
|
323
|
+
}
|
|
324
|
+
current[segments[segments.length - 1]] = value;
|
|
325
|
+
}
|
|
326
|
+
return target;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Keys of the objects matching the WHERE of a statement, collected before any change so an update changing a
|
|
330
|
+
* WHERE field cannot meet the same object twice; at most LIMIT keys
|
|
331
|
+
* @param statement - the parsed statement
|
|
332
|
+
* @returns the primary keys
|
|
333
|
+
*/
|
|
334
|
+
async collectStatementKeys(statement) {
|
|
335
|
+
const keys = [];
|
|
336
|
+
if (statement.limit !== undefined && statement.limit <= 0) {
|
|
337
|
+
return keys;
|
|
338
|
+
}
|
|
339
|
+
for await (const object of this.iterate(statement.filter.toString())) {
|
|
340
|
+
keys.push(this.getPrimaryKey(object));
|
|
341
|
+
if (statement.limit && keys.length >= statement.limit) {
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return keys;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Run one write of the generic fallback; an object deleted since the keys were collected is skipped
|
|
349
|
+
* @param key - the primary key
|
|
350
|
+
* @param write - the write
|
|
351
|
+
* @returns true when written, false when the object is gone
|
|
352
|
+
* @throws the write error when the object still exists
|
|
353
|
+
*/
|
|
354
|
+
async writeIfPresent(key, write) {
|
|
355
|
+
try {
|
|
356
|
+
await write();
|
|
357
|
+
return true;
|
|
358
|
+
}
|
|
359
|
+
catch (err) {
|
|
360
|
+
if (await this.exists(key)) {
|
|
361
|
+
throw err;
|
|
362
|
+
}
|
|
363
|
+
return false;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Generic `deleteMany`: collect the matching keys (up to LIMIT), then delete them one by one with this
|
|
368
|
+
* repository's `delete` primitive
|
|
369
|
+
*
|
|
370
|
+
* Used by stores without a native bulk delete. On a store repository the primitive emits no event.
|
|
371
|
+
* @param statement - the DELETE statement or its parsed form
|
|
372
|
+
* @param params - values for the placeholders
|
|
373
|
+
* @returns the number of objects deleted
|
|
374
|
+
*/
|
|
375
|
+
async deleteManyByKey(statement, params) {
|
|
376
|
+
const parsed = await this.parseStatement("DELETE", statement, params);
|
|
377
|
+
const keys = await this.collectStatementKeys(parsed);
|
|
378
|
+
let count = 0;
|
|
379
|
+
for (const key of keys) {
|
|
380
|
+
if (await this.writeIfPresent(key, () => this.delete(key)))
|
|
381
|
+
count++;
|
|
382
|
+
}
|
|
383
|
+
return count;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Generic `updateMany`: collect the matching keys (up to LIMIT), then patch them one by one with this
|
|
387
|
+
* repository's `patch` primitive. A dotted target reads the object to rewrite its top-level field.
|
|
388
|
+
*
|
|
389
|
+
* Used by stores without a native bulk update. On a store repository the primitive emits no event.
|
|
390
|
+
* @param statement - the UPDATE statement or its parsed form
|
|
391
|
+
* @param params - values for the placeholders
|
|
392
|
+
* @returns the number of objects updated
|
|
393
|
+
*/
|
|
394
|
+
async updateManyByKey(statement, params) {
|
|
395
|
+
const parsed = await this.parseStatement("UPDATE", statement, params);
|
|
396
|
+
const keys = await this.collectStatementKeys(parsed);
|
|
397
|
+
const nested = parsed.assignments.some(a => a.field.includes("."));
|
|
398
|
+
let count = 0;
|
|
399
|
+
for (const key of keys) {
|
|
400
|
+
const patch = {};
|
|
401
|
+
if (nested) {
|
|
402
|
+
let current;
|
|
403
|
+
try {
|
|
404
|
+
current = await this.get(key);
|
|
405
|
+
}
|
|
406
|
+
catch (err) {
|
|
407
|
+
if (await this.exists(key))
|
|
408
|
+
throw err;
|
|
409
|
+
// Deleted since the keys were collected
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
for (const { field } of parsed.assignments) {
|
|
413
|
+
const top = field.split(".")[0];
|
|
414
|
+
// A deep copy of the current value, so the nested assignments keep its other fields
|
|
415
|
+
patch[top] ??= current?.[top] === undefined ? undefined : JSON.parse(JSON.stringify(current[top]));
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
if (await this.writeIfPresent(key, () => this.patch(key, this.applyAssignments(patch, parsed.assignments)))) {
|
|
419
|
+
count++;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
return count;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Delete in bulk: see {@link Repository.deleteMany}
|
|
426
|
+
*
|
|
427
|
+
* The generic implementation collects the matching keys then deletes them with `delete`; stores override it
|
|
428
|
+
* with their native batch operation.
|
|
429
|
+
* @override
|
|
430
|
+
*/
|
|
431
|
+
async deleteMany(statement, params) {
|
|
432
|
+
return this.deleteManyByKey(statement, params);
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Update in bulk: see {@link Repository.updateMany}
|
|
436
|
+
*
|
|
437
|
+
* The generic implementation collects the matching keys then patches them with `patch`; stores override it
|
|
438
|
+
* with their native batch operation.
|
|
439
|
+
* @override
|
|
440
|
+
*/
|
|
441
|
+
async updateMany(statement, params) {
|
|
442
|
+
return this.updateManyByKey(statement, params);
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Copy the known options (fallback, maxGroups, warn); undefined values keep the current ones
|
|
446
|
+
* @override
|
|
447
|
+
* @throws Error when maxGroups is not a positive integer or fallback is unknown
|
|
448
|
+
*/
|
|
449
|
+
configureAggregation(options) {
|
|
450
|
+
const { fallback, maxGroups, warn } = options ?? {};
|
|
451
|
+
if (maxGroups !== undefined && !(Number.isInteger(maxGroups) && maxGroups > 0)) {
|
|
452
|
+
throw new Error(`Invalid aggregation maxGroups '${maxGroups}': expected a positive integer`);
|
|
453
|
+
}
|
|
454
|
+
if (fallback !== undefined && !["allow", "warn", "deny"].includes(fallback)) {
|
|
455
|
+
throw new Error(`Invalid aggregation fallback '${fallback}': expected allow, warn or deny`);
|
|
456
|
+
}
|
|
457
|
+
if (fallback !== undefined)
|
|
458
|
+
this.aggregationOptions.fallback = fallback;
|
|
459
|
+
if (maxGroups !== undefined)
|
|
460
|
+
this.aggregationOptions.maxGroups = maxGroups;
|
|
461
|
+
if (warn !== undefined)
|
|
462
|
+
this.aggregationOptions.warn = warn;
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Keep the full generic signature here (not `spec: any`): concrete repositories are used
|
|
466
|
+
* directly in code and tests, and must expose the typed rows.
|
|
467
|
+
* @override
|
|
468
|
+
*/
|
|
469
|
+
async aggregate(spec, params) {
|
|
470
|
+
const { toAggregationQuery } = await import("@webda/ql");
|
|
471
|
+
return this.executeAggregation(toAggregationQuery(spec, params));
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Run a validated aggregation
|
|
475
|
+
*
|
|
476
|
+
* Backends override it to aggregate natively, and call super for the shapes they cannot translate.
|
|
477
|
+
* The default streams iterate() into the in-memory Aggregator, under the fallback policy.
|
|
478
|
+
* @param query - the validated aggregation
|
|
479
|
+
* @returns the rows
|
|
480
|
+
*/
|
|
481
|
+
async executeAggregation(query) {
|
|
482
|
+
await this.checkAggregationFallback(query, "the backend has no native aggregation");
|
|
483
|
+
return { rows: await this.aggregateInMemory(query), native: false };
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Apply the fallback policy before aggregating in memory
|
|
487
|
+
* @param query - the aggregation
|
|
488
|
+
* @param reason - why it cannot run natively
|
|
489
|
+
* @throws AggregationError AGGREGATION_NOT_NATIVE when the policy is deny
|
|
490
|
+
*/
|
|
491
|
+
async checkAggregationFallback(query, reason) {
|
|
492
|
+
const { fallback, warn } = this.aggregationOptions;
|
|
493
|
+
if (fallback === "allow")
|
|
494
|
+
return;
|
|
495
|
+
const model = this.model?.Metadata?.Identifier ?? this.model?.name;
|
|
496
|
+
const message = `Aggregation on ${model} grouped by [${query.groupBy.join(", ")}] runs in memory: ${reason}`;
|
|
497
|
+
if (fallback === "deny") {
|
|
498
|
+
const { AggregationError } = await import("@webda/ql");
|
|
499
|
+
throw new AggregationError("AGGREGATION_NOT_NATIVE", message);
|
|
500
|
+
}
|
|
501
|
+
const shape = `${query.groupBy.join(",")}|${reason}`;
|
|
502
|
+
if (!this.warnedAggregations.has(shape)) {
|
|
503
|
+
this.warnedAggregations.add(shape);
|
|
504
|
+
warn?.(message);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Aggregate by streaming the filtered items
|
|
509
|
+
* @param query - the aggregation
|
|
510
|
+
* @returns the rows
|
|
511
|
+
*/
|
|
512
|
+
async aggregateInMemory(query) {
|
|
513
|
+
const { Aggregator } = await import("@webda/ql");
|
|
514
|
+
const aggregator = new Aggregator(query, this.aggregationOptions.maxGroups);
|
|
515
|
+
for await (const item of this.iterate(query.filter.toString())) {
|
|
516
|
+
aggregator.add(item);
|
|
517
|
+
}
|
|
518
|
+
return aggregator.rows();
|
|
519
|
+
}
|
|
223
520
|
/** @override */
|
|
224
521
|
on(event, listener) {
|
|
225
522
|
if (!this.events.has(event)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../src/repositories/abstract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../src/repositories/abstract.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,4 +37,31 @@ export interface CreateWithoutPrimaryKeyOptions {
|
|
|
37
37
|
* @param options - data factory and raw backend reader
|
|
38
38
|
*/
|
|
39
39
|
export declare function checkCreateWithoutPrimaryKey(repos: Repository<any>[], options: CreateWithoutPrimaryKeyOptions): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Dataset of {@link checkAggregation}: nulls, missing attributes, a non-numeric `points`,
|
|
42
|
+
* nested `team.name`, booleans. The `mixed` field mixes numbers and strings, with upper and lower case, to pin type ranking and code unit order.
|
|
43
|
+
* The `at` field holds `Date` objects: in-memory engines read them as ISO strings, JSON backends store them so.
|
|
44
|
+
*/
|
|
45
|
+
export declare const AGGREGATION_DATASET: Record<string, any>[];
|
|
46
|
+
/**
|
|
47
|
+
* Hand-computed expectations over {@link AGGREGATION_DATASET}; every backend must return exactly these rows
|
|
48
|
+
*/
|
|
49
|
+
export declare const AGGREGATION_CASES: {
|
|
50
|
+
name: string;
|
|
51
|
+
spec: any;
|
|
52
|
+
rows: Record<string, unknown>[];
|
|
53
|
+
}[];
|
|
54
|
+
/**
|
|
55
|
+
* Check a repository aggregates {@link AGGREGATION_DATASET} exactly like {@link AGGREGATION_CASES}
|
|
56
|
+
*
|
|
57
|
+
* The repository must be empty and keyed by `uuid`; the dataset is created in it.
|
|
58
|
+
* @param repo - the repository to check
|
|
59
|
+
* @param options - expected native flag, and case names to skip with a documented reason
|
|
60
|
+
* @param options.native - the expected `native` flag of every result
|
|
61
|
+
* @param options.skip - names of the cases to skip
|
|
62
|
+
*/
|
|
63
|
+
export declare function checkAggregation(repo: Repository<any>, options: {
|
|
64
|
+
native: boolean;
|
|
65
|
+
skip?: string[];
|
|
66
|
+
}): Promise<void>;
|
|
40
67
|
//# sourceMappingURL=conformance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../src/repositories/conformance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IAC7B;;;;;OAKG;IACH,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IACtD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,EACxB,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
1
|
+
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../src/repositories/conformance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IAC7B;;;;;OAKG;IACH,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IACtD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,EACxB,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAkEpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CAAE,EA2L3F,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EACrB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAWf"}
|