@cavelang/cli 0.35.0 → 0.36.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/README.md +224 -12
- package/dist/internal/act/action.js +2 -1
- package/dist/internal/act/action.js.map +1 -1
- package/dist/internal/act/declare.d.ts.map +1 -1
- package/dist/internal/act/declare.js +82 -53
- package/dist/internal/act/declare.js.map +1 -1
- package/dist/internal/act/engine.d.ts +4 -3
- package/dist/internal/act/engine.d.ts.map +1 -1
- package/dist/internal/act/engine.js +121 -32
- package/dist/internal/act/engine.js.map +1 -1
- package/dist/internal/automate/cancellation.d.ts +3 -0
- package/dist/internal/automate/cancellation.d.ts.map +1 -0
- package/dist/internal/automate/cancellation.js +38 -0
- package/dist/internal/automate/cancellation.js.map +1 -0
- package/dist/internal/automate/declare.d.ts.map +1 -1
- package/dist/internal/automate/declare.js +49 -24
- package/dist/internal/automate/declare.js.map +1 -1
- package/dist/internal/automate/engine.d.ts +7 -3
- package/dist/internal/automate/engine.d.ts.map +1 -1
- package/dist/internal/automate/engine.js +196 -93
- package/dist/internal/automate/engine.js.map +1 -1
- package/dist/internal/automate/error-message.d.ts +3 -0
- package/dist/internal/automate/error-message.d.ts.map +1 -0
- package/dist/internal/automate/error-message.js +10 -0
- package/dist/internal/automate/error-message.js.map +1 -0
- package/dist/internal/automate/main.d.ts.map +1 -1
- package/dist/internal/automate/main.js +238 -35
- package/dist/internal/automate/main.js.map +1 -1
- package/dist/internal/automate/options.d.ts +4 -0
- package/dist/internal/automate/options.d.ts.map +1 -0
- package/dist/internal/automate/options.js +19 -0
- package/dist/internal/automate/options.js.map +1 -0
- package/dist/internal/connect/declared.d.ts +6 -27
- package/dist/internal/connect/declared.d.ts.map +1 -1
- package/dist/internal/connect/declared.js +165 -76
- package/dist/internal/connect/declared.js.map +1 -1
- package/dist/internal/connect/error-message.d.ts +3 -0
- package/dist/internal/connect/error-message.d.ts.map +1 -0
- package/dist/internal/connect/error-message.js +10 -0
- package/dist/internal/connect/error-message.js.map +1 -0
- package/dist/internal/connect/federation.d.ts +9 -0
- package/dist/internal/connect/federation.d.ts.map +1 -0
- package/dist/internal/connect/federation.js +19 -0
- package/dist/internal/connect/federation.js.map +1 -0
- package/dist/internal/connect/fetch-failure.d.ts +3 -0
- package/dist/internal/connect/fetch-failure.d.ts.map +1 -0
- package/dist/internal/connect/fetch-failure.js +36 -0
- package/dist/internal/connect/fetch-failure.js.map +1 -0
- package/dist/internal/connect/main.d.ts +1 -0
- package/dist/internal/connect/main.d.ts.map +1 -1
- package/dist/internal/connect/main.js +288 -114
- package/dist/internal/connect/main.js.map +1 -1
- package/dist/internal/connect/options.d.ts +3 -0
- package/dist/internal/connect/options.d.ts.map +1 -0
- package/dist/internal/connect/options.js +9 -0
- package/dist/internal/connect/options.js.map +1 -0
- package/dist/internal/connect/records.d.ts +3 -0
- package/dist/internal/connect/records.d.ts.map +1 -0
- package/dist/internal/connect/records.js +21 -0
- package/dist/internal/connect/records.js.map +1 -0
- package/dist/internal/connect/run.d.ts +1 -18
- package/dist/internal/connect/run.d.ts.map +1 -1
- package/dist/internal/connect/run.js +115 -55
- package/dist/internal/connect/run.js.map +1 -1
- package/dist/internal/connect/source.d.ts +3 -1
- package/dist/internal/connect/source.d.ts.map +1 -1
- package/dist/internal/connect/source.js +226 -47
- package/dist/internal/connect/source.js.map +1 -1
- package/dist/internal/connect/template.d.ts +2 -2
- package/dist/internal/connect/template.d.ts.map +1 -1
- package/dist/internal/connect/template.js +25 -9
- package/dist/internal/connect/template.js.map +1 -1
- package/dist/internal/connect/utf8.d.ts +3 -0
- package/dist/internal/connect/utf8.d.ts.map +1 -0
- package/dist/internal/connect/utf8.js +12 -0
- package/dist/internal/connect/utf8.js.map +1 -0
- package/dist/internal/eval/cleanup.d.ts +5 -0
- package/dist/internal/eval/cleanup.d.ts.map +1 -0
- package/dist/internal/eval/cleanup.js +50 -0
- package/dist/internal/eval/cleanup.js.map +1 -0
- package/dist/internal/eval/error-message.d.ts +3 -0
- package/dist/internal/eval/error-message.d.ts.map +1 -0
- package/dist/internal/eval/error-message.js +10 -0
- package/dist/internal/eval/error-message.js.map +1 -0
- package/dist/internal/eval/judge.d.ts.map +1 -1
- package/dist/internal/eval/judge.js +3 -31
- package/dist/internal/eval/judge.js.map +1 -1
- package/dist/internal/eval/loop.d.ts.map +1 -1
- package/dist/internal/eval/loop.js +18 -4
- package/dist/internal/eval/loop.js.map +1 -1
- package/dist/internal/eval/main.d.ts.map +1 -1
- package/dist/internal/eval/main.js +22 -10
- package/dist/internal/eval/main.js.map +1 -1
- package/dist/internal/eval/options.d.ts +6 -0
- package/dist/internal/eval/options.d.ts.map +1 -0
- package/dist/internal/eval/options.js +31 -0
- package/dist/internal/eval/options.js.map +1 -0
- package/dist/internal/eval/queries.d.ts.map +1 -1
- package/dist/internal/eval/queries.js +9 -6
- package/dist/internal/eval/queries.js.map +1 -1
- package/dist/internal/eval/run.d.ts.map +1 -1
- package/dist/internal/eval/run.js +112 -24
- package/dist/internal/eval/run.js.map +1 -1
- package/dist/internal/eval/score.d.ts.map +1 -1
- package/dist/internal/eval/score.js +9 -2
- package/dist/internal/eval/score.js.map +1 -1
- package/dist/internal/eval/suite.d.ts.map +1 -1
- package/dist/internal/eval/suite.js +14 -2
- package/dist/internal/eval/suite.js.map +1 -1
- package/dist/internal/ingest/cleanup.d.ts +5 -0
- package/dist/internal/ingest/cleanup.d.ts.map +1 -0
- package/dist/internal/ingest/cleanup.js +50 -0
- package/dist/internal/ingest/cleanup.js.map +1 -0
- package/dist/internal/ingest/content.d.ts +6 -0
- package/dist/internal/ingest/content.d.ts.map +1 -0
- package/dist/internal/ingest/content.js +25 -0
- package/dist/internal/ingest/content.js.map +1 -0
- package/dist/internal/ingest/context.d.ts.map +1 -1
- package/dist/internal/ingest/context.js +25 -7
- package/dist/internal/ingest/context.js.map +1 -1
- package/dist/internal/ingest/error-message.d.ts +3 -0
- package/dist/internal/ingest/error-message.d.ts.map +1 -0
- package/dist/internal/ingest/error-message.js +10 -0
- package/dist/internal/ingest/error-message.js.map +1 -0
- package/dist/internal/ingest/files.d.ts +4 -12
- package/dist/internal/ingest/files.d.ts.map +1 -1
- package/dist/internal/ingest/files.js +22 -10
- package/dist/internal/ingest/files.js.map +1 -1
- package/dist/internal/ingest/main.d.ts.map +1 -1
- package/dist/internal/ingest/main.js +46 -16
- package/dist/internal/ingest/main.js.map +1 -1
- package/dist/internal/ingest/options.d.ts +6 -0
- package/dist/internal/ingest/options.d.ts.map +1 -0
- package/dist/internal/ingest/options.js +27 -0
- package/dist/internal/ingest/options.js.map +1 -0
- package/dist/internal/ingest/prompt.d.ts.map +1 -1
- package/dist/internal/ingest/prompt.js +14 -10
- package/dist/internal/ingest/prompt.js.map +1 -1
- package/dist/internal/ingest/run.d.ts +9 -2
- package/dist/internal/ingest/run.d.ts.map +1 -1
- package/dist/internal/ingest/run.js +206 -62
- package/dist/internal/ingest/run.js.map +1 -1
- package/dist/internal/ingest/timeout.d.ts +3 -0
- package/dist/internal/ingest/timeout.d.ts.map +1 -0
- package/dist/internal/ingest/timeout.js +14 -0
- package/dist/internal/ingest/timeout.js.map +1 -0
- package/dist/internal/ingest/web.d.ts +2 -11
- package/dist/internal/ingest/web.d.ts.map +1 -1
- package/dist/internal/ingest/web.js +131 -25
- package/dist/internal/ingest/web.js.map +1 -1
- package/dist/internal/loop/budgets.d.ts +3 -0
- package/dist/internal/loop/budgets.d.ts.map +1 -0
- package/dist/internal/loop/budgets.js +10 -0
- package/dist/internal/loop/budgets.js.map +1 -0
- package/dist/internal/loop/index.d.ts +2 -0
- package/dist/internal/loop/index.d.ts.map +1 -1
- package/dist/internal/loop/index.js +2 -0
- package/dist/internal/loop/index.js.map +1 -1
- package/dist/internal/loop/json-answer.d.ts +7 -0
- package/dist/internal/loop/json-answer.d.ts.map +1 -0
- package/dist/internal/loop/json-answer.js +79 -0
- package/dist/internal/loop/json-answer.js.map +1 -0
- package/dist/internal/loop/json-spans.d.ts +3 -0
- package/dist/internal/loop/json-spans.d.ts.map +1 -0
- package/dist/internal/loop/json-spans.js +88 -0
- package/dist/internal/loop/json-spans.js.map +1 -0
- package/dist/internal/loop/llm.d.ts +3 -2
- package/dist/internal/loop/llm.d.ts.map +1 -1
- package/dist/internal/loop/llm.js +115 -32
- package/dist/internal/loop/llm.js.map +1 -1
- package/dist/internal/loop/process.d.ts +3 -1
- package/dist/internal/loop/process.d.ts.map +1 -1
- package/dist/internal/loop/process.js +159 -59
- package/dist/internal/loop/process.js.map +1 -1
- package/dist/internal/loop/read-snapshot.d.ts +4 -0
- package/dist/internal/loop/read-snapshot.d.ts.map +1 -0
- package/dist/internal/loop/read-snapshot.js +29 -0
- package/dist/internal/loop/read-snapshot.js.map +1 -0
- package/dist/internal/loop/reconstruct.d.ts +6 -5
- package/dist/internal/loop/reconstruct.d.ts.map +1 -1
- package/dist/internal/loop/reconstruct.js +19 -8
- package/dist/internal/loop/reconstruct.js.map +1 -1
- package/dist/internal/loop/score-settings.d.ts +5 -0
- package/dist/internal/loop/score-settings.d.ts.map +1 -0
- package/dist/internal/loop/score-settings.js +14 -0
- package/dist/internal/loop/score-settings.js.map +1 -0
- package/dist/internal/loop/sqlite.d.ts.map +1 -1
- package/dist/internal/loop/sqlite.js +15 -7
- package/dist/internal/loop/sqlite.js.map +1 -1
- package/dist/internal/loop/store.d.ts.map +1 -1
- package/dist/internal/loop/store.js +11 -7
- package/dist/internal/loop/store.js.map +1 -1
- package/dist/internal/loop/timeout.d.ts +3 -0
- package/dist/internal/loop/timeout.d.ts.map +1 -0
- package/dist/internal/loop/timeout.js +13 -0
- package/dist/internal/loop/timeout.js.map +1 -0
- package/dist/internal/mcp/error-message.d.ts +3 -0
- package/dist/internal/mcp/error-message.d.ts.map +1 -0
- package/dist/internal/mcp/error-message.js +10 -0
- package/dist/internal/mcp/error-message.js.map +1 -0
- package/dist/internal/mcp/main.d.ts.map +1 -1
- package/dist/internal/mcp/main.js +42 -27
- package/dist/internal/mcp/main.js.map +1 -1
- package/dist/internal/mcp/read-snapshot.d.ts +4 -0
- package/dist/internal/mcp/read-snapshot.d.ts.map +1 -0
- package/dist/internal/mcp/read-snapshot.js +22 -0
- package/dist/internal/mcp/read-snapshot.js.map +1 -0
- package/dist/internal/mcp/server.d.ts.map +1 -1
- package/dist/internal/mcp/server.js +181 -21
- package/dist/internal/mcp/server.js.map +1 -1
- package/dist/internal/mcp/source.d.ts +3 -0
- package/dist/internal/mcp/source.d.ts.map +1 -0
- package/dist/internal/mcp/source.js +13 -0
- package/dist/internal/mcp/source.js.map +1 -0
- package/dist/internal/mcp/tools.d.ts.map +1 -1
- package/dist/internal/mcp/tools.js +135 -72
- package/dist/internal/mcp/tools.js.map +1 -1
- package/dist/internal/rules/declarations.d.ts +6 -0
- package/dist/internal/rules/declarations.d.ts.map +1 -0
- package/dist/internal/rules/declarations.js +14 -0
- package/dist/internal/rules/declarations.js.map +1 -0
- package/dist/internal/rules/declare.d.ts.map +1 -1
- package/dist/internal/rules/declare.js +30 -16
- package/dist/internal/rules/declare.js.map +1 -1
- package/dist/internal/rules/engine.d.ts +8 -7
- package/dist/internal/rules/engine.d.ts.map +1 -1
- package/dist/internal/rules/engine.js +150 -44
- package/dist/internal/rules/engine.js.map +1 -1
- package/dist/internal/shape/alias-root.d.ts +3 -0
- package/dist/internal/shape/alias-root.d.ts.map +1 -0
- package/dist/internal/shape/alias-root.js +13 -0
- package/dist/internal/shape/alias-root.js.map +1 -0
- package/dist/internal/shape/check.d.ts +15 -3
- package/dist/internal/shape/check.d.ts.map +1 -1
- package/dist/internal/shape/check.js +230 -100
- package/dist/internal/shape/check.js.map +1 -1
- package/dist/internal/shape/client.d.ts.map +1 -1
- package/dist/internal/shape/client.js +42 -20
- package/dist/internal/shape/client.js.map +1 -1
- package/dist/internal/shape/constraints.d.ts +8 -0
- package/dist/internal/shape/constraints.d.ts.map +1 -0
- package/dist/internal/shape/constraints.js +17 -0
- package/dist/internal/shape/constraints.js.map +1 -0
- package/dist/internal/shape/edit-distance.d.ts +3 -0
- package/dist/internal/shape/edit-distance.d.ts.map +1 -0
- package/dist/internal/shape/edit-distance.js +33 -0
- package/dist/internal/shape/edit-distance.js.map +1 -0
- package/dist/internal/shape/gate.d.ts.map +1 -1
- package/dist/internal/shape/gate.js +0 -0
- package/dist/internal/shape/gate.js.map +1 -1
- package/dist/internal/shape/snapshot.d.ts +4 -0
- package/dist/internal/shape/snapshot.d.ts.map +1 -0
- package/dist/internal/shape/snapshot.js +20 -0
- package/dist/internal/shape/snapshot.js.map +1 -0
- package/dist/internal/shape/suggest.d.ts +8 -6
- package/dist/internal/shape/suggest.d.ts.map +1 -1
- package/dist/internal/shape/suggest.js +208 -92
- package/dist/internal/shape/suggest.js.map +1 -1
- package/dist/internal/sync/error-message.d.ts +3 -0
- package/dist/internal/sync/error-message.d.ts.map +1 -0
- package/dist/internal/sync/error-message.js +10 -0
- package/dist/internal/sync/error-message.js.map +1 -0
- package/dist/internal/sync/index.d.ts +3 -2
- package/dist/internal/sync/index.d.ts.map +1 -1
- package/dist/internal/sync/index.js +3 -2
- package/dist/internal/sync/index.js.map +1 -1
- package/dist/internal/sync/sync.d.ts +8 -5
- package/dist/internal/sync/sync.d.ts.map +1 -1
- package/dist/internal/sync/sync.js +322 -65
- package/dist/internal/sync/sync.js.map +1 -1
- package/dist/internal/view/api.d.ts +3 -1
- package/dist/internal/view/api.d.ts.map +1 -1
- package/dist/internal/view/api.js +154 -90
- package/dist/internal/view/api.js.map +1 -1
- package/dist/internal/view/error-message.d.ts +3 -0
- package/dist/internal/view/error-message.d.ts.map +1 -0
- package/dist/internal/view/error-message.js +10 -0
- package/dist/internal/view/error-message.js.map +1 -0
- package/dist/internal/view/main.d.ts.map +1 -1
- package/dist/internal/view/main.js +61 -8
- package/dist/internal/view/main.js.map +1 -1
- package/dist/internal/view/page.d.ts.map +1 -1
- package/dist/internal/view/page.js +119 -20
- package/dist/internal/view/page.js.map +1 -1
- package/dist/internal/view/report.d.ts.map +1 -1
- package/dist/internal/view/report.js +180 -145
- package/dist/internal/view/report.js.map +1 -1
- package/dist/internal/view/scope.d.ts +6 -2
- package/dist/internal/view/scope.d.ts.map +1 -1
- package/dist/internal/view/scope.js +107 -24
- package/dist/internal/view/scope.js.map +1 -1
- package/dist/internal/view/sensitivity.d.ts +4 -0
- package/dist/internal/view/sensitivity.d.ts.map +1 -0
- package/dist/internal/view/sensitivity.js +11 -0
- package/dist/internal/view/sensitivity.js.map +1 -0
- package/dist/internal/view/server.d.ts.map +1 -1
- package/dist/internal/view/server.js +57 -20
- package/dist/internal/view/server.js.map +1 -1
- package/dist/src/atomic-output.d.ts +3 -0
- package/dist/src/atomic-output.d.ts.map +1 -0
- package/dist/src/atomic-output.js +67 -0
- package/dist/src/atomic-output.js.map +1 -0
- package/dist/src/cli.d.ts +3 -2
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +188 -173
- package/dist/src/cli.js.map +1 -1
- package/dist/src/dispatch.d.ts.map +1 -1
- package/dist/src/dispatch.js +3 -2
- package/dist/src/dispatch.js.map +1 -1
- package/dist/src/doctor.d.ts.map +1 -1
- package/dist/src/doctor.js +178 -102
- package/dist/src/doctor.js.map +1 -1
- package/dist/src/error-message.d.ts +3 -0
- package/dist/src/error-message.d.ts.map +1 -0
- package/dist/src/error-message.js +20 -0
- package/dist/src/error-message.js.map +1 -0
- package/dist/src/hooks-config.d.ts +3 -0
- package/dist/src/hooks-config.d.ts.map +1 -0
- package/dist/src/hooks-config.js +23 -0
- package/dist/src/hooks-config.js.map +1 -0
- package/package.json +23 -20
- package/src/atomic-output.ts +47 -0
- package/src/cli.ts +170 -147
- package/src/dispatch.ts +3 -2
- package/src/doctor.ts +192 -111
- package/src/error-message.ts +13 -0
- package/src/hooks-config.ts +22 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/** Deterministic TypeScript client generation from §20 EXPECTS claims (spec §20.4). */
|
|
2
|
+
import { readSnapshot } from "./snapshot.js";
|
|
2
3
|
import { createHash } from 'node:crypto';
|
|
3
4
|
import { Registry } from '@cavelang/canonical';
|
|
4
|
-
import {
|
|
5
|
+
import { declarationSnapshot } from "./check.js";
|
|
6
|
+
import { constraintProblem } from "./constraints.js";
|
|
5
7
|
export const clientFormatVersion = 1;
|
|
6
8
|
const identifierOf = (type) => {
|
|
7
9
|
const words = type.split(/[^A-Za-z0-9]+/).filter(Boolean);
|
|
@@ -12,39 +14,42 @@ const identifierOf = (type) => {
|
|
|
12
14
|
return /^[0-9]/.test(name) ? `_${name}` : name;
|
|
13
15
|
};
|
|
14
16
|
const compare = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
// These emitted type bindings cannot coexist with a generated interface.
|
|
18
|
+
// Value-only helpers do not reserve names in TypeScript's type namespace.
|
|
19
|
+
const reservedTypeNames = new Set(['Store', 'CaveValue']);
|
|
17
20
|
const normalizedFields = (store) => {
|
|
21
|
+
return readSnapshot(store, 'cave_client_schema', () => readNormalizedFields(store));
|
|
22
|
+
};
|
|
23
|
+
const readNormalizedFields = (store) => {
|
|
18
24
|
const problems = [];
|
|
19
25
|
const typeNames = new Map();
|
|
20
26
|
const fields = new Map();
|
|
21
|
-
const
|
|
27
|
+
const snapshot = declarationSnapshot(store);
|
|
28
|
+
const declarations = [...snapshot.expectations].sort((a, b) => compare(a.type, b.type) || compare(a.kind, b.kind) || compare(a.name, b.name) ||
|
|
22
29
|
compare(a.row.claim_key, b.row.claim_key));
|
|
30
|
+
const declarationTags = snapshot.tags;
|
|
23
31
|
for (const expectation of declarations) {
|
|
24
32
|
const typeName = identifierOf(expectation.type);
|
|
25
33
|
if (typeName === undefined) {
|
|
26
34
|
problems.push(`${expectation.type} cannot become a TypeScript type name`);
|
|
27
35
|
continue;
|
|
28
36
|
}
|
|
37
|
+
if (reservedTypeNames.has(typeName)) {
|
|
38
|
+
problems.push(`type ${JSON.stringify(expectation.type)} generates reserved client type ${typeName}; rename the CAVE type`);
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
29
41
|
const priorType = typeNames.get(typeName);
|
|
30
42
|
if (priorType !== undefined && priorType !== expectation.type) {
|
|
31
43
|
problems.push(`types ${JSON.stringify(priorType)} and ${JSON.stringify(expectation.type)} both generate ${typeName}`);
|
|
32
44
|
continue;
|
|
33
45
|
}
|
|
34
46
|
typeNames.set(typeName, expectation.type);
|
|
35
|
-
const tags =
|
|
47
|
+
const tags = declarationTags.get(expectation.row.id) ?? [];
|
|
36
48
|
const cardinalities = tags.filter(tag => tag.key === 'cardinality').map(tag => tag.value);
|
|
37
49
|
const units = tags.filter(tag => tag.key === 'unit').map(tag => tag.value);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
if (units.length > 1 || units.some(value => value === null || value === '')) {
|
|
43
|
-
problems.push(`${expectation.type} EXPECTS ${expectation.name}: unit must have one non-empty value`);
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
if (expectation.kind === 'relation' && units.length > 0) {
|
|
47
|
-
problems.push(`${expectation.type} EXPECTS ${expectation.name}: relation expectations cannot declare #unit`);
|
|
50
|
+
const problem = constraintProblem(expectation, tags);
|
|
51
|
+
if (problem !== undefined) {
|
|
52
|
+
problems.push(problem);
|
|
48
53
|
continue;
|
|
49
54
|
}
|
|
50
55
|
const relation = expectation.kind === 'relation' ?
|
|
@@ -58,7 +63,7 @@ const normalizedFields = (store) => {
|
|
|
58
63
|
...units[0] === undefined || units[0] === null ? {} : { unit: units[0] },
|
|
59
64
|
...relation === undefined ? {} : { primary: relation.primary, inverse: relation.isInverse }
|
|
60
65
|
};
|
|
61
|
-
const key =
|
|
66
|
+
const key = JSON.stringify([field.type, field.kind, field.name]);
|
|
62
67
|
const prior = fields.get(key);
|
|
63
68
|
if (prior !== undefined && JSON.stringify(prior) !== JSON.stringify(field)) {
|
|
64
69
|
problems.push(`${expectation.type} EXPECTS ${expectation.name}: conflicting current declarations`);
|
|
@@ -85,7 +90,9 @@ const expression = (field) => {
|
|
|
85
90
|
const emit = (fields, digest) => {
|
|
86
91
|
const groups = new Map();
|
|
87
92
|
for (const field of fields) {
|
|
88
|
-
|
|
93
|
+
const group = groups.get(field.type) ?? [];
|
|
94
|
+
group.push(field);
|
|
95
|
+
groups.set(field.type, group);
|
|
89
96
|
}
|
|
90
97
|
const types = [...groups.entries()].sort(([a], [b]) => compare(a, b));
|
|
91
98
|
const declarations = types.flatMap(([type, typeFields]) => {
|
|
@@ -95,9 +102,9 @@ const emit = (fields, digest) => {
|
|
|
95
102
|
...typeFields.map(field => ` readonly ${q(field.name)}: ${propertyType(field)}`),
|
|
96
103
|
'}',
|
|
97
104
|
'',
|
|
98
|
-
`export const read${typeName} = (store: Store, entity: string): ${typeName} => ({`,
|
|
99
|
-
...typeFields.map(field => ` ${q(field.name)}: ${expression(field)},`),
|
|
100
|
-
'})',
|
|
105
|
+
`export const read${typeName} = (store: Store, entity: string): ${typeName} => readSnapshot(store, () => ({`,
|
|
106
|
+
...typeFields.map(field => ` [${q(field.name)}]: ${expression(field)},`),
|
|
107
|
+
'}))',
|
|
101
108
|
''
|
|
102
109
|
];
|
|
103
110
|
});
|
|
@@ -118,6 +125,21 @@ const emit = (fields, digest) => {
|
|
|
118
125
|
'',
|
|
119
126
|
'const currentSql = QuerySql.current()',
|
|
120
127
|
'',
|
|
128
|
+
'const readSnapshot = <T>(store: Store, read: () => T): T => {',
|
|
129
|
+
" store.db.exec('SAVEPOINT cave_client_read')",
|
|
130
|
+
' let result: T',
|
|
131
|
+
' try { result = read() }',
|
|
132
|
+
' catch (error) {',
|
|
133
|
+
" try { store.db.exec('RELEASE cave_client_read') }",
|
|
134
|
+
' catch (releaseError) {',
|
|
135
|
+
" throw new AggregateError([error, releaseError], 'CAVE client read failed and snapshot release also failed', { cause: error })",
|
|
136
|
+
' }',
|
|
137
|
+
' throw error',
|
|
138
|
+
' }',
|
|
139
|
+
" store.db.exec('RELEASE cave_client_read')",
|
|
140
|
+
' return result',
|
|
141
|
+
'}',
|
|
142
|
+
'',
|
|
121
143
|
'const attributeValues = <Unit extends string | undefined>(',
|
|
122
144
|
' store: Store, entity: string, attribute: string, expectedUnit: Unit',
|
|
123
145
|
'): CaveValue<Unit>[] => {',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAU,CAAA;AA8B7C,MAAM,YAAY,GAAG,CAAC,IAAY,EAAsB,EAAE;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAChD,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE5E,yEAAyE;AACzE,0EAA0E;AAC1E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;AAEzD,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAiD,EAAE;IACvF,OAAO,YAAY,CAAC,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAA;AACrF,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,KAAY,EAAiD,EAAE;IAC3F,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC7C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,YAAY,GAAG,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC5D,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QAC7E,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;IAC5C,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAA;IAErC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,uCAAuC,CAAC,CAAA;YACzE,SAAQ;QACV,CAAC;QACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,mCAAmC,QAAQ,wBAAwB,CAAC,CAAA;YAC1H,SAAQ;QACV,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACzC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;YAC9D,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAA;YACrH,SAAQ;QACV,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;QAEzC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACzF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1E,MAAM,OAAO,GAAG,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QACpD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACtB,SAAQ;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YAChD,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACpE,MAAM,KAAK,GAAgB;YACzB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,QAAQ;YACR,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YACxD,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;YACxE,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE;SAC5F,CAAA;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QAChE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3E,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,YAAY,WAAW,CAAC,IAAI,oCAAoC,CAAC,CAAA;YAClG,SAAQ;QACV,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACxB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAA;AAClF,CAAC,CAAA;AAED,MAAM,CAAC,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AAExD,MAAM,SAAS,GAAG,CAAC,KAAkB,EAAU,EAAE,CAC/C,aAAa,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAA;AAExE,MAAM,YAAY,GAAG,CAAC,KAAkB,EAAU,EAAE;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IACtE,OAAO,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAA;AACpE,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,KAAkB,EAAU,EAAE;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACzC,mBAAmB,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;YAC5G,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,iCAAiC,CAAC,CAAC,KAAK,CAAC,OAAQ,CAAC,KAAK,KAAK,CAAC,OAAO,KAAK,IAAI,GAAG,CAAA;IAClF,OAAO,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC;QAClC,OAAO,MAAM,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;AAClE,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,MAA8B,EAAE,MAAc,EAAU,EAAE;IACtE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAA;IAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC/B,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;QACxD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAA;QACxC,OAAO;YACL,oBAAoB,QAAQ,IAAI;YAChC,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACjF,GAAG;YACH,EAAE;YACF,oBAAoB,QAAQ,sCAAsC,QAAQ,kCAAkC;YAC5G,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;YACzE,KAAK;YACL,EAAE;SACH,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO;QACL,sCAAsC,mBAAmB,gBAAgB;QACzE,sBAAsB,MAAM,EAAE;QAC9B,wDAAwD;QACxD,EAAE;QACF,0CAA0C,mBAAmB,WAAW;QACxE,mCAAmC,CAAC,CAAC,MAAM,CAAC,WAAW;QACvD,6BAA6B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,WAAW;QAC5E,EAAE;QACF,wEAAwE;QACxE,yBAAyB;QACzB,kCAAkC;QAClC,6DAA6D;QAC7D,GAAG;QACH,EAAE;QACF,uCAAuC;QACvC,EAAE;QACF,+DAA+D;QAC/D,+CAA+C;QAC/C,iBAAiB;QACjB,2BAA2B;QAC3B,mBAAmB;QACnB,uDAAuD;QACvD,4BAA4B;QAC5B,qIAAqI;QACrI,OAAO;QACP,iBAAiB;QACjB,KAAK;QACL,6CAA6C;QAC7C,iBAAiB;QACjB,GAAG;QACH,EAAE;QACF,4DAA4D;QAC5D,uEAAuE;QACvE,2BAA2B;QAC3B,qCAAqC;QACrC,4EAA4E;QAC5E,0BAA0B;QAC1B,8DAA8D;QAC9D,oDAAoD;QACpD,6DAA6D;QAC7D,0FAA0F;QAC1F,oGAAoG;QACpG,KAAK;QACL,iBAAiB;QACjB,GAAG;QACH,EAAE;QACF,uGAAuG;QACvG,aAAa;QACb,4FAA4F;QAC5F,0FAA0F;QAC1F,EAAE;QACF,8DAA8D;QAC9D,8BAA8B;QAC9B,yGAAyG;QACzG,KAAK;QACL,qBAAqB;QACrB,GAAG;QACH,EAAE;QACF,GAAG,YAAY;KAChB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,KAAY,EACZ,UAAgC,EAAE,EAChB,EAAE;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,mBAAmB,CAAA;IACtD,IAAI,OAAO,KAAK,mBAAmB,EAAE,CAAC;QACpC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,2CAA2C,OAAO,gBAAgB,mBAAmB,EAAE,CAAC,EAAE,CAAA;IAC3H,CAAC;IACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAA;IACrD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAChE,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,mBAAmB;QAC5B,MAAM;QACN,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;KACtC,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Expectation } from './check.ts';
|
|
2
|
+
export type ConstraintTag = {
|
|
3
|
+
readonly key: string;
|
|
4
|
+
readonly value: null | string;
|
|
5
|
+
};
|
|
6
|
+
/** Shared contract for runtime shape checks and generated client declarations. */
|
|
7
|
+
export declare const constraintProblem: (expectation: Pick<Expectation, "type" | "kind" | "name">, tags: readonly ConstraintTag[]) => string | undefined;
|
|
8
|
+
//# sourceMappingURL=constraints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraints.d.ts","sourceRoot":"","sources":["../../src/constraints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,CAAA;AAEnF,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,GAAI,aAAa,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,MAAM,SAAS,aAAa,EAAE,KAAG,MAAM,GAAG,SAcrI,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Shared contract for runtime shape checks and generated client declarations. */
|
|
2
|
+
export const constraintProblem = (expectation, tags) => {
|
|
3
|
+
const cardinalities = tags.filter(tag => tag.key === 'cardinality').map(tag => tag.value);
|
|
4
|
+
const units = tags.filter(tag => tag.key === 'unit').map(tag => tag.value);
|
|
5
|
+
const prefix = `${expectation.type} EXPECTS ${expectation.name}: `;
|
|
6
|
+
if (cardinalities.length > 1 || cardinalities.some(value => value !== 'one' && value !== 'some')) {
|
|
7
|
+
return `${prefix}cardinality must be one or some, at most once`;
|
|
8
|
+
}
|
|
9
|
+
if (units.length > 1 || units.some(value => typeof value !== 'string' || value === '')) {
|
|
10
|
+
return `${prefix}unit must have one non-empty text value`;
|
|
11
|
+
}
|
|
12
|
+
if (expectation.kind === 'relation' && units.length > 0) {
|
|
13
|
+
return `${prefix}relation expectations cannot declare #unit`;
|
|
14
|
+
}
|
|
15
|
+
return undefined;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=constraints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraints.js","sourceRoot":"","sources":["../../src/constraints.ts"],"names":[],"mappings":"AAIA,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,WAAwD,EAAE,IAA8B,EAAsB,EAAE;IAChJ,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1E,MAAM,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,YAAY,WAAW,CAAC,IAAI,IAAI,CAAA;IAClE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC;QACjG,OAAO,GAAG,MAAM,+CAA+C,CAAA;IACjE,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC;QACvF,OAAO,GAAG,MAAM,yCAAyC,CAAA;IAC3D,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,MAAM,4CAA4C,CAAA;IAC9D,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-distance.d.ts","sourceRoot":"","sources":["../../src/edit-distance.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,MAAM,KAAG,MAAM,GAAG,SA0B7E,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** Exact UTF-16 Levenshtein distance when within the non-negative integer limit. */
|
|
2
|
+
export const distanceWithin = (a, b, limit) => {
|
|
3
|
+
if (Math.abs(a.length - b.length) > limit)
|
|
4
|
+
return undefined;
|
|
5
|
+
if (a.length < b.length)
|
|
6
|
+
[a, b] = [b, a];
|
|
7
|
+
let previous = Array(b.length + 1).fill(Infinity);
|
|
8
|
+
let current = Array(b.length + 1).fill(Infinity);
|
|
9
|
+
for (let j = 0; j <= Math.min(b.length, limit); j += 1)
|
|
10
|
+
previous[j] = j;
|
|
11
|
+
for (let i = 1; i <= a.length; i += 1) {
|
|
12
|
+
// A path at most `limit` edits long cannot leave this diagonal band.
|
|
13
|
+
const low = Math.max(1, i - limit);
|
|
14
|
+
const high = Math.min(b.length, i + limit);
|
|
15
|
+
current[low - 1] = low === 1 ? i : Infinity;
|
|
16
|
+
if (high < b.length)
|
|
17
|
+
current[high + 1] = Infinity;
|
|
18
|
+
let minimum = current[low - 1];
|
|
19
|
+
for (let j = low; j <= high; j += 1) {
|
|
20
|
+
current[j] = Math.min(previous[j] + 1, current[j - 1] + 1, previous[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));
|
|
21
|
+
minimum = Math.min(minimum, current[j]);
|
|
22
|
+
}
|
|
23
|
+
// Every path to the final cell crosses this row; none can recover now.
|
|
24
|
+
if (minimum > limit)
|
|
25
|
+
return undefined;
|
|
26
|
+
const swap = previous;
|
|
27
|
+
previous = current;
|
|
28
|
+
current = swap;
|
|
29
|
+
}
|
|
30
|
+
const distance = previous[b.length];
|
|
31
|
+
return distance <= limit ? distance : undefined;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=edit-distance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-distance.js","sourceRoot":"","sources":["../../src/edit-distance.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAsB,EAAE;IACxF,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK;QAAE,OAAO,SAAS,CAAA;IAC3D,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;QAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxC,IAAI,QAAQ,GAAG,KAAK,CAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACzD,IAAI,OAAO,GAAG,KAAK,CAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC;QAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,qEAAqE;QACrE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAA;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAA;QAC1C,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC3C,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAA;QACjD,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAE,CAAA;QAC/B,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,EACzD,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACrD,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,CAAA;QAC1C,CAAC;QACD,uEAAuE;QACvE,IAAI,OAAO,GAAG,KAAK;YAAE,OAAO,SAAS,CAAA;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAA;QACrB,QAAQ,GAAG,OAAO,CAAA;QAClB,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAE,CAAA;IACpC,OAAO,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;AACjD,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AACtD,sFAAsF;GACpF;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,CAAA;AAErE;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,WAAW,SAAS,KAAG,
|
|
1
|
+
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AACtD,sFAAsF;GACpF;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,CAAA;AAErE;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,WAAW,SAAS,KAAG,MACoE,CAAA;AASxH;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,EAAE,MAAM,MAAM,EAAE,UAAS;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,aAAkB,KAAG,UAiB5G,CAAA"}
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAQrC;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAoB,EAAU,EAAE,CAC3D,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAQrC;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAoB,EAAU,EAAE,CAC3D,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;AAExH,wFAAwF;AACxF,MAAM,QAAQ,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAA;AAGnD,MAAM,UAAU,GAAG,CAAC,KAAc,EAAqB,EAAE,CACvD,KAAK,YAAY,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAY,EAAE,IAAY,EAAE,UAAgD,EAAE,EAAc,EAAE;IACxH,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YAC5B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;YACpE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;YAClG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,KAAK,CAAC,MAAM,mBAAmB,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YACvG,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QAC7B,CAAC,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAA;QACnD,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAE5C,uFAAuF;AACvF,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,KAAK,EAAE,MAAM,MAAM,EAAE,MAAM,MAAM,CAAC,KAAG,CAc3E,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Read under an internally named savepoint without hiding an error during release. */
|
|
2
|
+
export const readSnapshot = (store, name, read) => {
|
|
3
|
+
store.db.exec(`SAVEPOINT ${name}`);
|
|
4
|
+
let result;
|
|
5
|
+
try {
|
|
6
|
+
result = read();
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
try {
|
|
10
|
+
store.db.exec(`RELEASE ${name}`);
|
|
11
|
+
}
|
|
12
|
+
catch (releaseError) {
|
|
13
|
+
throw new AggregateError([error, releaseError], `CAVE read snapshot ${name} failed and release also failed`, { cause: error });
|
|
14
|
+
}
|
|
15
|
+
throw error;
|
|
16
|
+
}
|
|
17
|
+
store.db.exec(`RELEASE ${name}`);
|
|
18
|
+
return result;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/snapshot.ts"],"names":[],"mappings":"AAEA,uFAAuF;AACvF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,KAAY,EAAE,IAAY,EAAE,IAAa,EAAK,EAAE;IAC9E,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAA;IAClC,IAAI,MAAS,CAAA;IACb,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,EAAE,CAAA;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC;YAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;QAAC,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YAC7D,MAAM,IAAI,cAAc,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,EAC5C,sBAAsB,IAAI,iCAAiC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAClF,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;IACD,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;IAChC,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
|
|
@@ -22,22 +22,22 @@ export type Signal = {
|
|
|
22
22
|
};
|
|
23
23
|
/** One proposed same-entity pair (spec §27), strongest first in results. */
|
|
24
24
|
export type Suggestion = {
|
|
25
|
-
/** The less-established name
|
|
25
|
+
/** The less-established name; normally the subject of the suggested claim. */
|
|
26
26
|
readonly entity: string;
|
|
27
|
-
/** The more-established name
|
|
27
|
+
/** The more-established name; normally the object of the suggested claim. */
|
|
28
28
|
readonly canonical: string;
|
|
29
29
|
/** Combined evidence score in 0..1 (spec §27.2). */
|
|
30
30
|
readonly score: number;
|
|
31
31
|
/** `score / 2`, clamped to 0.3..0.5 — the §20.2 review band. */
|
|
32
32
|
readonly confidence: number;
|
|
33
33
|
readonly signals: readonly Signal[];
|
|
34
|
-
/** The suggested claim as CAVE text
|
|
34
|
+
/** The suggested claim as CAVE text; the undirected relation may reverse to preserve entity identity. */
|
|
35
35
|
readonly line: string;
|
|
36
36
|
};
|
|
37
37
|
export type Options = {
|
|
38
|
-
/**
|
|
38
|
+
/** Finite minimum evidence score in 0..1 (spec §27.2), default {@link defaultMinScore}. */
|
|
39
39
|
readonly minScore?: number;
|
|
40
|
-
/**
|
|
40
|
+
/** Positive safe integer; at most this many suggestions, strongest first. */
|
|
41
41
|
readonly limit?: number;
|
|
42
42
|
};
|
|
43
43
|
export declare const defaultMinScore = 0.6;
|
|
@@ -59,7 +59,9 @@ export declare const suggestAliases: (store: Store, options?: Options) => Sugges
|
|
|
59
59
|
/**
|
|
60
60
|
* Appends suggestions as claims, stamped `@src:suggest/alias` (spec §9.5,
|
|
61
61
|
* §27.3). Once written, a pair has `ALIAS` history and is never suggested
|
|
62
|
-
* again
|
|
62
|
+
* again. Recheck both directions of pair history under the write reservation,
|
|
63
|
+
* including retained suggestions that awaited an external judge; reviewed
|
|
64
|
+
* pairs and duplicate input pairs are skipped. Note the §13.6 consequence: a
|
|
63
65
|
* positive claim at any confidence links the alias closure; belief is
|
|
64
66
|
* graded, and review (confirm or retract) is the follow-up.
|
|
65
67
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/suggest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/suggest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAM5C,8DAA8D;AAC9D,MAAM,MAAM,MAAM,GAAG;IACnB,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAA;IAC5E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAAG;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,gEAAgE;IAChE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,yGAAyG;IACzG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC,+DAA+D;AAC/D,eAAO,MAAM,aAAa,kBAAkB,CAAA;AAE5C,6EAA6E;AAC7E,eAAO,MAAM,UAAU,cAAc,CAAA;AAgSrC;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,EAAE,UAAS,OAAY,KAAG,UAAU,EA2G9E,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,EAAE,aAAa,SAAS,UAAU,EAAE,KAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAuChG,CAAA;AAYN;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,EAAE,aAAa,SAAS,UAAU,EAAE,KAAG,MAI9E,CAAA;AAwBD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MAAM,EAUrE,CAAA"}
|