@cavelang/cli 0.27.14 → 0.29.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/Authors.md +5 -0
- package/License.md +6 -0
- package/README.md +122 -24
- package/dist/internal/act/action.d.ts +69 -0
- package/dist/internal/act/action.d.ts.map +1 -0
- package/dist/internal/act/action.js +201 -0
- package/dist/internal/act/action.js.map +1 -0
- package/dist/internal/act/declare.d.ts +102 -0
- package/dist/internal/act/declare.d.ts.map +1 -0
- package/dist/internal/act/declare.js +270 -0
- package/dist/internal/act/declare.js.map +1 -0
- package/dist/internal/act/engine.d.ts +103 -0
- package/dist/internal/act/engine.d.ts.map +1 -0
- package/dist/internal/act/engine.js +298 -0
- package/dist/internal/act/engine.js.map +1 -0
- package/dist/internal/act/index.d.ts +27 -0
- package/dist/internal/act/index.d.ts.map +1 -0
- package/dist/internal/act/index.js +25 -0
- package/dist/internal/act/index.js.map +1 -0
- package/dist/internal/automate/automation.d.ts +78 -0
- package/dist/internal/automate/automation.d.ts.map +1 -0
- package/dist/internal/automate/automation.js +135 -0
- package/dist/internal/automate/automation.js.map +1 -0
- package/dist/internal/automate/declare.d.ts +84 -0
- package/dist/internal/automate/declare.d.ts.map +1 -0
- package/dist/internal/automate/declare.js +233 -0
- package/dist/internal/automate/declare.js.map +1 -0
- package/dist/internal/automate/engine.d.ts +125 -0
- package/dist/internal/automate/engine.d.ts.map +1 -0
- package/dist/internal/automate/engine.js +388 -0
- package/dist/internal/automate/engine.js.map +1 -0
- package/dist/internal/automate/index.d.ts +28 -0
- package/dist/internal/automate/index.d.ts.map +1 -0
- package/dist/internal/automate/index.js +26 -0
- package/dist/internal/automate/index.js.map +1 -0
- package/dist/internal/automate/main.d.ts +26 -0
- package/dist/internal/automate/main.d.ts.map +1 -0
- package/dist/internal/automate/main.js +298 -0
- package/dist/internal/automate/main.js.map +1 -0
- package/dist/internal/connect/index.d.ts +26 -0
- package/dist/internal/connect/index.d.ts.map +1 -0
- package/dist/internal/connect/index.js +24 -0
- package/dist/internal/connect/index.js.map +1 -0
- package/dist/internal/connect/main.d.ts +23 -0
- package/dist/internal/connect/main.d.ts.map +1 -0
- package/dist/internal/connect/main.js +330 -0
- package/dist/internal/connect/main.js.map +1 -0
- package/dist/internal/connect/run.d.ts +85 -0
- package/dist/internal/connect/run.d.ts.map +1 -0
- package/dist/internal/connect/run.js +242 -0
- package/dist/internal/connect/run.js.map +1 -0
- package/dist/internal/connect/source.d.ts +44 -0
- package/dist/internal/connect/source.d.ts.map +1 -0
- package/dist/internal/connect/source.js +215 -0
- package/dist/internal/connect/source.js.map +1 -0
- package/dist/internal/connect/template.d.ts +69 -0
- package/dist/internal/connect/template.d.ts.map +1 -0
- package/dist/internal/connect/template.js +221 -0
- package/dist/internal/connect/template.js.map +1 -0
- package/dist/internal/eval/index.d.ts +28 -0
- package/dist/internal/eval/index.d.ts.map +1 -0
- package/dist/internal/eval/index.js +27 -0
- package/dist/internal/eval/index.js.map +1 -0
- package/dist/internal/eval/judge.d.ts +30 -0
- package/dist/internal/eval/judge.d.ts.map +1 -0
- package/dist/internal/eval/judge.js +101 -0
- package/dist/internal/eval/judge.js.map +1 -0
- package/dist/internal/eval/loop.d.ts +64 -0
- package/dist/internal/eval/loop.d.ts.map +1 -0
- package/dist/internal/eval/loop.js +123 -0
- package/dist/internal/eval/loop.js.map +1 -0
- package/dist/internal/eval/main.d.ts +17 -0
- package/dist/internal/eval/main.d.ts.map +1 -0
- package/dist/internal/eval/main.js +236 -0
- package/dist/internal/eval/main.js.map +1 -0
- package/dist/internal/eval/queries.d.ts +74 -0
- package/dist/internal/eval/queries.d.ts.map +1 -0
- package/dist/internal/eval/queries.js +161 -0
- package/dist/internal/eval/queries.js.map +1 -0
- package/dist/internal/eval/run.d.ts +143 -0
- package/dist/internal/eval/run.d.ts.map +1 -0
- package/dist/internal/eval/run.js +376 -0
- package/dist/internal/eval/run.js.map +1 -0
- package/dist/internal/eval/score.d.ts +81 -0
- package/dist/internal/eval/score.d.ts.map +1 -0
- package/dist/internal/eval/score.js +126 -0
- package/dist/internal/eval/score.js.map +1 -0
- package/dist/internal/eval/suite.d.ts +66 -0
- package/dist/internal/eval/suite.d.ts.map +1 -0
- package/dist/internal/eval/suite.js +130 -0
- package/dist/internal/eval/suite.js.map +1 -0
- package/dist/internal/ingest/context.d.ts +20 -0
- package/dist/internal/ingest/context.d.ts.map +1 -0
- package/dist/internal/ingest/context.js +59 -0
- package/dist/internal/ingest/context.js.map +1 -0
- package/dist/internal/ingest/files.d.ts +46 -0
- package/dist/internal/ingest/files.d.ts.map +1 -0
- package/dist/internal/ingest/files.js +115 -0
- package/dist/internal/ingest/files.js.map +1 -0
- package/dist/internal/ingest/index.d.ts +31 -0
- package/dist/internal/ingest/index.d.ts.map +1 -0
- package/dist/internal/ingest/index.js +29 -0
- package/dist/internal/ingest/index.js.map +1 -0
- package/dist/internal/ingest/main.d.ts +12 -0
- package/dist/internal/ingest/main.d.ts.map +1 -0
- package/dist/internal/ingest/main.js +180 -0
- package/dist/internal/ingest/main.js.map +1 -0
- package/dist/internal/ingest/prompt.d.ts +32 -0
- package/dist/internal/ingest/prompt.d.ts.map +1 -0
- package/dist/internal/ingest/prompt.js +75 -0
- package/dist/internal/ingest/prompt.js.map +1 -0
- package/dist/internal/ingest/run.d.ts +142 -0
- package/dist/internal/ingest/run.d.ts.map +1 -0
- package/dist/internal/ingest/run.js +350 -0
- package/dist/internal/ingest/run.js.map +1 -0
- package/dist/internal/ingest/web.d.ts +48 -0
- package/dist/internal/ingest/web.d.ts.map +1 -0
- package/dist/internal/ingest/web.js +140 -0
- package/dist/internal/ingest/web.js.map +1 -0
- package/dist/internal/loop/demo.d.ts +22 -0
- package/dist/internal/loop/demo.d.ts.map +1 -0
- package/dist/internal/loop/demo.js +67 -0
- package/dist/internal/loop/demo.js.map +1 -0
- package/dist/internal/loop/index.d.ts +20 -0
- package/dist/internal/loop/index.d.ts.map +1 -0
- package/dist/internal/loop/index.js +17 -0
- package/dist/internal/loop/index.js.map +1 -0
- package/dist/internal/loop/llm.d.ts +99 -0
- package/dist/internal/loop/llm.d.ts.map +1 -0
- package/dist/internal/loop/llm.js +231 -0
- package/dist/internal/loop/llm.js.map +1 -0
- package/dist/internal/loop/reconstruct.d.ts +87 -0
- package/dist/internal/loop/reconstruct.d.ts.map +1 -0
- package/dist/internal/loop/reconstruct.js +157 -0
- package/dist/internal/loop/reconstruct.js.map +1 -0
- package/dist/internal/loop/sqlite.d.ts +13 -0
- package/dist/internal/loop/sqlite.d.ts.map +1 -0
- package/dist/internal/loop/sqlite.js +33 -0
- package/dist/internal/loop/sqlite.js.map +1 -0
- package/dist/internal/loop/store.d.ts +50 -0
- package/dist/internal/loop/store.d.ts.map +1 -0
- package/dist/internal/loop/store.js +100 -0
- package/dist/internal/loop/store.js.map +1 -0
- package/dist/internal/mcp/bin.d.ts +7 -0
- package/dist/internal/mcp/bin.d.ts.map +1 -0
- package/dist/internal/mcp/bin.js +8 -0
- package/dist/internal/mcp/bin.js.map +1 -0
- package/dist/internal/mcp/index.d.ts +25 -0
- package/dist/internal/mcp/index.d.ts.map +1 -0
- package/dist/internal/mcp/index.js +23 -0
- package/dist/internal/mcp/index.js.map +1 -0
- package/dist/internal/mcp/main.d.ts +23 -0
- package/dist/internal/mcp/main.d.ts.map +1 -0
- package/dist/internal/mcp/main.js +156 -0
- package/dist/internal/mcp/main.js.map +1 -0
- package/dist/internal/mcp/server.d.ts +92 -0
- package/dist/internal/mcp/server.d.ts.map +1 -0
- package/dist/internal/mcp/server.js +251 -0
- package/dist/internal/mcp/server.js.map +1 -0
- package/dist/internal/mcp/tools.d.ts +91 -0
- package/dist/internal/mcp/tools.d.ts.map +1 -0
- package/dist/internal/mcp/tools.js +584 -0
- package/dist/internal/mcp/tools.js.map +1 -0
- package/dist/internal/rules/declare.d.ts +58 -0
- package/dist/internal/rules/declare.d.ts.map +1 -0
- package/dist/internal/rules/declare.js +152 -0
- package/dist/internal/rules/declare.js.map +1 -0
- package/dist/internal/rules/engine.d.ts +125 -0
- package/dist/internal/rules/engine.d.ts.map +1 -0
- package/dist/internal/rules/engine.js +575 -0
- package/dist/internal/rules/engine.js.map +1 -0
- package/dist/internal/rules/index.d.ts +23 -0
- package/dist/internal/rules/index.d.ts.map +1 -0
- package/dist/internal/rules/index.js +21 -0
- package/dist/internal/rules/index.js.map +1 -0
- package/dist/internal/rules/rule.d.ts +88 -0
- package/dist/internal/rules/rule.d.ts.map +1 -0
- package/dist/internal/rules/rule.js +221 -0
- package/dist/internal/rules/rule.js.map +1 -0
- package/dist/internal/shape/check.d.ts +118 -0
- package/dist/internal/shape/check.d.ts.map +1 -0
- package/dist/internal/shape/check.js +331 -0
- package/dist/internal/shape/check.js.map +1 -0
- package/dist/internal/shape/client.d.ts +31 -0
- package/dist/internal/shape/client.d.ts.map +1 -0
- package/dist/internal/shape/client.js +170 -0
- package/dist/internal/shape/client.js.map +1 -0
- package/dist/internal/shape/gate.d.ts +33 -0
- package/dist/internal/shape/gate.d.ts.map +1 -0
- package/dist/internal/shape/gate.js +0 -0
- package/dist/internal/shape/gate.js.map +1 -0
- package/dist/internal/shape/index.d.ts +27 -0
- package/dist/internal/shape/index.d.ts.map +1 -0
- package/dist/internal/shape/index.js +23 -0
- package/dist/internal/shape/index.js.map +1 -0
- package/dist/internal/shape/suggest.d.ts +82 -0
- package/dist/internal/shape/suggest.d.ts.map +1 -0
- package/dist/internal/shape/suggest.js +374 -0
- package/dist/internal/shape/suggest.js.map +1 -0
- package/dist/internal/sync/index.d.ts +22 -0
- package/dist/internal/sync/index.d.ts.map +1 -0
- package/dist/internal/sync/index.js +21 -0
- package/dist/internal/sync/index.js.map +1 -0
- package/dist/internal/sync/sync.d.ts +95 -0
- package/dist/internal/sync/sync.d.ts.map +1 -0
- package/dist/internal/sync/sync.js +342 -0
- package/dist/internal/sync/sync.js.map +1 -0
- package/dist/internal/view/api.d.ts +196 -0
- package/dist/internal/view/api.d.ts.map +1 -0
- package/dist/internal/view/api.js +189 -0
- package/dist/internal/view/api.js.map +1 -0
- package/dist/internal/view/index.d.ts +33 -0
- package/dist/internal/view/index.d.ts.map +1 -0
- package/dist/internal/view/index.js +30 -0
- package/dist/internal/view/index.js.map +1 -0
- package/dist/internal/view/main.d.ts +11 -0
- package/dist/internal/view/main.d.ts.map +1 -0
- package/dist/internal/view/main.js +98 -0
- package/dist/internal/view/main.js.map +1 -0
- package/dist/internal/view/page.d.ts +14 -0
- package/dist/internal/view/page.d.ts.map +1 -0
- package/dist/internal/view/page.js +370 -0
- package/dist/internal/view/page.js.map +1 -0
- package/dist/internal/view/report.d.ts +52 -0
- package/dist/internal/view/report.d.ts.map +1 -0
- package/dist/internal/view/report.js +367 -0
- package/dist/internal/view/report.js.map +1 -0
- package/dist/internal/view/scope.d.ts +11 -0
- package/dist/internal/view/scope.d.ts.map +1 -0
- package/dist/internal/view/scope.js +41 -0
- package/dist/internal/view/scope.js.map +1 -0
- package/dist/internal/view/server.d.ts +35 -0
- package/dist/internal/view/server.d.ts.map +1 -0
- package/dist/internal/view/server.js +141 -0
- package/dist/internal/view/server.js.map +1 -0
- package/dist/src/act.d.ts +3 -0
- package/dist/src/act.d.ts.map +1 -0
- package/dist/src/act.js +3 -0
- package/dist/src/act.js.map +1 -0
- package/dist/src/automate.d.ts +3 -0
- package/dist/src/automate.d.ts.map +1 -0
- package/dist/src/automate.js +3 -0
- package/dist/src/automate.js.map +1 -0
- package/dist/src/cli.d.ts +24 -17
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +408 -107
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands.d.ts +104 -0
- package/dist/src/commands.d.ts.map +1 -0
- package/dist/src/commands.js +33 -0
- package/dist/src/commands.js.map +1 -0
- package/dist/src/connect.d.ts +3 -0
- package/dist/src/connect.d.ts.map +1 -0
- package/dist/src/connect.js +3 -0
- package/dist/src/connect.js.map +1 -0
- package/dist/src/dispatch.d.ts +14 -0
- package/dist/src/dispatch.d.ts.map +1 -0
- package/dist/src/dispatch.js +116 -0
- package/dist/src/dispatch.js.map +1 -0
- package/dist/src/doctor.d.ts +45 -0
- package/dist/src/doctor.d.ts.map +1 -0
- package/dist/src/doctor.js +284 -0
- package/dist/src/doctor.js.map +1 -0
- package/dist/src/eval.d.ts +3 -0
- package/dist/src/eval.d.ts.map +1 -0
- package/dist/src/eval.js +3 -0
- package/dist/src/eval.js.map +1 -0
- package/dist/src/index.d.ts +9 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/ingest.d.ts +3 -0
- package/dist/src/ingest.d.ts.map +1 -0
- package/dist/src/ingest.js +3 -0
- package/dist/src/ingest.js.map +1 -0
- package/dist/src/loop.d.ts +3 -0
- package/dist/src/loop.d.ts.map +1 -0
- package/dist/src/loop.js +3 -0
- package/dist/src/loop.js.map +1 -0
- package/dist/src/main.d.ts +1 -1
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +3 -75
- package/dist/src/main.js.map +1 -1
- package/dist/src/mcp.d.ts +3 -0
- package/dist/src/mcp.d.ts.map +1 -0
- package/dist/src/mcp.js +3 -0
- package/dist/src/mcp.js.map +1 -0
- package/dist/src/rules.d.ts +3 -0
- package/dist/src/rules.d.ts.map +1 -0
- package/dist/src/rules.js +3 -0
- package/dist/src/rules.js.map +1 -0
- package/dist/src/shape.d.ts +3 -0
- package/dist/src/shape.d.ts.map +1 -0
- package/dist/src/shape.js +3 -0
- package/dist/src/shape.js.map +1 -0
- package/dist/src/sync.d.ts +3 -0
- package/dist/src/sync.d.ts.map +1 -0
- package/dist/src/sync.js +3 -0
- package/dist/src/sync.js.map +1 -0
- package/dist/src/view.d.ts +3 -0
- package/dist/src/view.d.ts.map +1 -0
- package/dist/src/view.js +3 -0
- package/dist/src/view.js.map +1 -0
- package/package.json +81 -21
- package/src/act.ts +2 -0
- package/src/automate.ts +2 -0
- package/src/cli.ts +416 -102
- package/src/commands.ts +48 -0
- package/src/connect.ts +2 -0
- package/src/dispatch.ts +141 -0
- package/src/doctor.ts +370 -0
- package/src/eval.ts +2 -0
- package/src/index.ts +9 -2
- package/src/ingest.ts +2 -0
- package/src/loop.ts +2 -0
- package/src/main.ts +3 -66
- package/src/mcp.ts +2 -0
- package/src/rules.ts +2 -0
- package/src/shape.ts +2 -0
- package/src/sync.ts +2 -0
- package/src/view.ts +2 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page (spec §30.1) — one static, self-contained HTML document: no
|
|
3
|
+
* external scripts, styles, fonts or images, so it renders offline and
|
|
4
|
+
* the server's CSP can deny every non-self source. Views are hash
|
|
5
|
+
* routes over the read-only `/api/*` endpoints; claims render from
|
|
6
|
+
* *structured* row data (never by re-parsing text — no second grammar),
|
|
7
|
+
* and every entity name, claim key and row id links onward: entity 360,
|
|
8
|
+
* topic browse, belief-history timeline, lineage, search.
|
|
9
|
+
*
|
|
10
|
+
* `__CAVE_DB__`, `__CAVE_VERSION__`, and `__CAVE_SENSITIVITY__` are stamped by the server
|
|
11
|
+
* (HTML-escaped) when the page is requested.
|
|
12
|
+
*/
|
|
13
|
+
export const page = `<!doctype html>
|
|
14
|
+
<html lang="en">
|
|
15
|
+
<head>
|
|
16
|
+
<meta charset="utf-8">
|
|
17
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
18
|
+
<meta name="color-scheme" content="light dark">
|
|
19
|
+
<link rel="icon" href="data:,">
|
|
20
|
+
<title>cave — __CAVE_DB__</title>
|
|
21
|
+
<style>
|
|
22
|
+
:root {
|
|
23
|
+
--bg: #ffffff; --fg: #1c1e21; --dim: #71767c; --line: #e5e7ea;
|
|
24
|
+
--accent: #0b62b8; --pill: #f1f3f5; --bad: #b3261e; --warn: #8a6100;
|
|
25
|
+
--bar: #cfe3f7; --mark: #fff2c4;
|
|
26
|
+
}
|
|
27
|
+
@media (prefers-color-scheme: dark) {
|
|
28
|
+
:root {
|
|
29
|
+
--bg: #111417; --fg: #e4e6e8; --dim: #969ca3; --line: #272c31;
|
|
30
|
+
--accent: #6db3f2; --pill: #1c2126; --bad: #ff8078; --warn: #dfb54a;
|
|
31
|
+
--bar: #1f3c5a; --mark: #4a3f14;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
* { box-sizing: border-box; }
|
|
35
|
+
body {
|
|
36
|
+
margin: 0; background: var(--bg); color: var(--fg);
|
|
37
|
+
font: 15px/1.5 system-ui, sans-serif;
|
|
38
|
+
}
|
|
39
|
+
a { color: var(--accent); text-decoration: none; }
|
|
40
|
+
a:hover { text-decoration: underline; }
|
|
41
|
+
header {
|
|
42
|
+
position: sticky; top: 0; display: flex; gap: 1rem; align-items: center;
|
|
43
|
+
padding: .55rem 1rem; background: var(--bg); border-bottom: 1px solid var(--line);
|
|
44
|
+
}
|
|
45
|
+
header .brand { font-weight: 700; color: var(--fg); }
|
|
46
|
+
header input[type=search] {
|
|
47
|
+
flex: 1; max-width: 26rem; padding: .3rem .6rem; border: 1px solid var(--line);
|
|
48
|
+
border-radius: .4rem; background: var(--pill); color: var(--fg); font: inherit;
|
|
49
|
+
}
|
|
50
|
+
header label { color: var(--dim); font-size: .85rem; display: flex; gap: .35rem; align-items: center; }
|
|
51
|
+
main { max-width: 64rem; margin: 0 auto; padding: 1rem 1rem 3rem; }
|
|
52
|
+
footer {
|
|
53
|
+
max-width: 64rem; margin: 0 auto; padding: .6rem 1rem 1.4rem;
|
|
54
|
+
color: var(--dim); font-size: .8rem; border-top: 1px solid var(--line);
|
|
55
|
+
}
|
|
56
|
+
h1 { font-size: 1.25rem; margin: .8rem 0 .4rem; word-break: break-word; }
|
|
57
|
+
h1 .kind { color: var(--dim); font-weight: 400; font-size: .85rem; }
|
|
58
|
+
section { margin: 1.1rem 0; }
|
|
59
|
+
section h2 { font-size: .8rem; text-transform: uppercase; letter-spacing: .06em; color: var(--dim); margin: 0 0 .35rem; }
|
|
60
|
+
section h2 .n { font-weight: 400; }
|
|
61
|
+
.none { color: var(--dim); font-size: .85rem; margin: .2rem 0; }
|
|
62
|
+
.err { color: var(--bad); }
|
|
63
|
+
.tiles { display: flex; flex-wrap: wrap; gap: .5rem; }
|
|
64
|
+
.tile { background: var(--pill); border-radius: .5rem; padding: .45rem .8rem; min-width: 5.4rem; }
|
|
65
|
+
.tile b { display: block; font-size: 1.15rem; }
|
|
66
|
+
.tile span { color: var(--dim); font-size: .75rem; }
|
|
67
|
+
.chips { display: flex; flex-wrap: wrap; gap: .4rem; }
|
|
68
|
+
.chip { background: var(--pill); border-radius: 1rem; padding: .15rem .7rem; font-size: .85rem; }
|
|
69
|
+
.chip .n { color: var(--dim); }
|
|
70
|
+
.claim {
|
|
71
|
+
display: flex; flex-wrap: wrap; gap: .45ch; align-items: baseline;
|
|
72
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
73
|
+
font-size: .84rem; padding: .18rem 0; border-bottom: 1px dotted var(--line);
|
|
74
|
+
word-break: break-word;
|
|
75
|
+
}
|
|
76
|
+
.claim:last-child { border-bottom: 0; }
|
|
77
|
+
.claim.dim > :not(.meta) { opacity: .55; }
|
|
78
|
+
.v { font-weight: 600; }
|
|
79
|
+
.not { color: var(--bad); font-style: normal; font-weight: 700; }
|
|
80
|
+
.a { color: var(--dim); }
|
|
81
|
+
.lit, .val { }
|
|
82
|
+
.ctx, .tag { background: var(--pill); border-radius: .3rem; padding: 0 .35rem; font-size: .78rem; color: var(--dim); }
|
|
83
|
+
.ctx.src { color: var(--accent); }
|
|
84
|
+
.conf { color: var(--warn); }
|
|
85
|
+
.conf.retracted { color: var(--bad); }
|
|
86
|
+
.imp { color: var(--bad); font-weight: 700; }
|
|
87
|
+
.cmt { color: var(--dim); }
|
|
88
|
+
.rel { color: var(--dim); font-size: .78rem; border: 1px solid var(--line); border-radius: .3rem; padding: 0 .3rem; }
|
|
89
|
+
.meta { margin-left: auto; white-space: nowrap; font-size: .74rem; }
|
|
90
|
+
.meta a, .meta time { color: var(--dim); margin-left: .6ch; }
|
|
91
|
+
.meta a:hover { color: var(--accent); }
|
|
92
|
+
.bar { display: inline-block; width: 7rem; height: .5rem; background: var(--pill); border-radius: .25rem; overflow: hidden; flex: none; }
|
|
93
|
+
.bar i { display: block; height: 100%; background: var(--bar); }
|
|
94
|
+
.when { color: var(--dim); font-size: .74rem; width: 6.2rem; flex: none; }
|
|
95
|
+
.tree, .tree ul { list-style: none; margin: 0; padding: 0 0 0 1.1rem; border-left: 1px solid var(--line); }
|
|
96
|
+
.tree > li, .tree ul > li { margin: .15rem 0; }
|
|
97
|
+
.role { color: var(--dim); font-size: .74rem; text-transform: uppercase; }
|
|
98
|
+
.rep { color: var(--dim); font-size: .78rem; }
|
|
99
|
+
.aka { color: var(--dim); font-size: .85rem; }
|
|
100
|
+
mark { background: var(--mark); color: inherit; border-radius: .2rem; }
|
|
101
|
+
.linked { font-size: .8rem; color: var(--dim); margin-top: .3rem; }
|
|
102
|
+
</style>
|
|
103
|
+
</head>
|
|
104
|
+
<body>
|
|
105
|
+
<header>
|
|
106
|
+
<a class="brand" href="#/">cave</a>
|
|
107
|
+
<input id="q" type="search" placeholder="search claims… (enter)">
|
|
108
|
+
<label><input id="aliases" type="checkbox"> aliases</label>
|
|
109
|
+
</header>
|
|
110
|
+
<main id="view"></main>
|
|
111
|
+
<footer>cave __CAVE_VERSION__ · __CAVE_DB__ · sensitivity ≤ __CAVE_SENSITIVITY__ · read-only view</footer>
|
|
112
|
+
<script>
|
|
113
|
+
'use strict'
|
|
114
|
+
var view = document.getElementById('view')
|
|
115
|
+
var aliasBox = document.getElementById('aliases')
|
|
116
|
+
var searchBox = document.getElementById('q')
|
|
117
|
+
var BACKTICK = '\\u0060'
|
|
118
|
+
|
|
119
|
+
aliasBox.checked = localStorage.getItem('cave-aliases') === '1'
|
|
120
|
+
aliasBox.addEventListener('change', function () {
|
|
121
|
+
localStorage.setItem('cave-aliases', aliasBox.checked ? '1' : '0')
|
|
122
|
+
route()
|
|
123
|
+
})
|
|
124
|
+
searchBox.addEventListener('keydown', function (event) {
|
|
125
|
+
if (event.key === 'Enter' && searchBox.value.trim() !== '') {
|
|
126
|
+
location.hash = '#/s/' + encodeURIComponent(searchBox.value.trim())
|
|
127
|
+
}
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
function esc (value) {
|
|
131
|
+
return String(value).replace(/[&<>"']/g, function (char) {
|
|
132
|
+
return { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[char]
|
|
133
|
+
})
|
|
134
|
+
}
|
|
135
|
+
var enc = encodeURIComponent
|
|
136
|
+
function pct (value) { return Math.round(value * 1000) / 10 + '%' }
|
|
137
|
+
|
|
138
|
+
function api (path, params) {
|
|
139
|
+
var pairs = []
|
|
140
|
+
Object.keys(params || {}).forEach(function (key) {
|
|
141
|
+
var value = params[key]
|
|
142
|
+
if (value !== undefined && value !== false) {
|
|
143
|
+
pairs.push(enc(key) + '=' + enc(value === true ? '1' : value))
|
|
144
|
+
}
|
|
145
|
+
})
|
|
146
|
+
return fetch('/api/' + path + (pairs.length ? '?' + pairs.join('&') : '')).then(function (res) {
|
|
147
|
+
return res.json().then(function (body) {
|
|
148
|
+
if (!res.ok) { throw new Error(body.error || ('http ' + res.status)) }
|
|
149
|
+
return body
|
|
150
|
+
})
|
|
151
|
+
})
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function isLiteral (name) { return name.charAt(0) === '"' || name.charAt(0) === BACKTICK }
|
|
155
|
+
function entityHtml (name) {
|
|
156
|
+
return isLiteral(name) ?
|
|
157
|
+
'<span class="lit">' + esc(name) + '</span>' :
|
|
158
|
+
'<a class="e" href="#/e/' + enc(name) + '">' + esc(name) + '</a>'
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function claimHtml (c, opts) {
|
|
162
|
+
opts = opts || {}
|
|
163
|
+
var parts = []
|
|
164
|
+
if (opts.when) { parts.push('<span class="when" title="' + esc(c.at) + '">' + esc(c.at.slice(0, 10)) + '</span>') }
|
|
165
|
+
if (opts.bar) { parts.push('<span class="bar" title="confidence ' + pct(c.conf) + '"><i style="width:' + (c.conf * 100) + '%"></i></span>') }
|
|
166
|
+
parts.push(entityHtml(c.subject))
|
|
167
|
+
parts.push('<span class="v">' + esc(c.verb) + '</span>' + (c.negated ? ' <em class="not">NOT</em>' : ''))
|
|
168
|
+
if (c.object !== undefined) {
|
|
169
|
+
parts.push(entityHtml(c.object))
|
|
170
|
+
} else if (c.attribute !== undefined) {
|
|
171
|
+
parts.push('<span class="a">' + esc(c.attribute) + ':</span> <span class="val">' + esc(c.value) + '</span>')
|
|
172
|
+
} else if (c.value !== undefined) {
|
|
173
|
+
parts.push('<span class="val">' + esc(c.value) + '</span>')
|
|
174
|
+
}
|
|
175
|
+
if (c.delta !== undefined) { parts.push('<span class="val">+/- ' + esc(c.delta) + '</span>') }
|
|
176
|
+
c.contexts.forEach(function (ctx) {
|
|
177
|
+
var source = (c.sources || []).filter(function (item) { return item.context === ctx })[0]
|
|
178
|
+
var label = '@' + esc(ctx)
|
|
179
|
+
if (source && source.href) {
|
|
180
|
+
label = '<a href="' + esc(source.href) + '" target="_blank" rel="noopener noreferrer" title="' + esc(source.location) + '">' + label + '</a>'
|
|
181
|
+
}
|
|
182
|
+
parts.push('<span class="ctx' + (ctx.indexOf('src:') === 0 ? ' src' : '') + '">' + label + '</span>')
|
|
183
|
+
})
|
|
184
|
+
c.tags.forEach(function (tag) {
|
|
185
|
+
parts.push('<span class="tag">#' + esc(tag.key) + (tag.value !== undefined ? ':' + esc(tag.value) : '') + '</span>')
|
|
186
|
+
})
|
|
187
|
+
if (c.conf === 0) {
|
|
188
|
+
parts.push('<span class="conf retracted" title="retracted">@ 0%</span>')
|
|
189
|
+
} else if (c.conf < 1) {
|
|
190
|
+
parts.push('<span class="conf">@ ' + pct(c.conf) + '</span>')
|
|
191
|
+
}
|
|
192
|
+
if (c.importance) { parts.push('<span class="imp">!</span>') }
|
|
193
|
+
if (c.comment !== undefined) { parts.push('<span class="cmt">; ' + esc(c.comment) + '</span>') }
|
|
194
|
+
var meta = '<span class="meta">' +
|
|
195
|
+
'<a href="#/k/' + enc(c.key) + '" title="belief history of this fact">history</a>' +
|
|
196
|
+
(c.cites > 0 || c.citedBy > 0 ? '<a href="#/l/' + enc(c.id) + '" title="cites ' + c.cites + ', cited by ' + c.citedBy + '">lineage</a>' : '') +
|
|
197
|
+
(opts.when ? '' : '<time title="' + esc(c.at) + '">' + esc(c.at.slice(0, 10)) + '</time>') +
|
|
198
|
+
'</span>'
|
|
199
|
+
return '<div class="claim' + (c.conf === 0 ? ' dim' : '') + '">' + parts.join(' ') + meta + '</div>'
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
function claimList (list, opts) {
|
|
203
|
+
return list.length === 0 ? '<p class="none">none</p>' : list.map(function (c) { return claimHtml(c, opts) }).join('')
|
|
204
|
+
}
|
|
205
|
+
function section (title, body, count) {
|
|
206
|
+
return '<section><h2>' + title + (count !== undefined ? ' <span class="n">(' + count + ')</span>' : '') + '</h2>' + body + '</section>'
|
|
207
|
+
}
|
|
208
|
+
function capNote (capped) {
|
|
209
|
+
return capped.items.length < capped.total ?
|
|
210
|
+
'<p class="none">…and ' + (capped.total - capped.items.length) + ' more (see cave check)</p>' : ''
|
|
211
|
+
}
|
|
212
|
+
function tile (value, label) {
|
|
213
|
+
return '<div class="tile"><b>' + value + '</b><span>' + label + '</span></div>'
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
function shapeProblem (violation) {
|
|
217
|
+
if (violation.actualCount === 0) return 'missing ' + violation.kind + ' ' + violation.name
|
|
218
|
+
var problems = []
|
|
219
|
+
if (violation.cardinality === 'one' && violation.actualCount !== 1) {
|
|
220
|
+
problems.push('has ' + violation.actualCount + ' ' + violation.kind + 's ' + violation.name + '; expected exactly one')
|
|
221
|
+
}
|
|
222
|
+
if (violation.unit !== undefined && violation.actualUnits.some(function (unit) { return unit !== violation.unit })) {
|
|
223
|
+
var units = violation.actualUnits.map(function (unit) { return unit === null ? '(none)' : unit }).join(', ')
|
|
224
|
+
problems.push('attribute ' + violation.name + ' has unit' + (violation.actualUnits.length === 1 ? '' : 's') + ' ' + units + '; expected ' + violation.unit)
|
|
225
|
+
}
|
|
226
|
+
return problems.join('; ')
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function dashboard (data) {
|
|
230
|
+
var cov = data.coverage
|
|
231
|
+
var html = ''
|
|
232
|
+
html += section('coverage', '<div class="tiles">' +
|
|
233
|
+
tile(cov.rows, 'rows') + tile(cov.facts, 'facts') + tile(cov.current, 'current') +
|
|
234
|
+
tile(cov.entities, 'entities') + tile(cov.typedEntities, 'typed') +
|
|
235
|
+
tile(cov.averageConfidence === null ? '—' : pct(cov.averageConfidence), 'avg conf') +
|
|
236
|
+
tile(cov.retracted, 'retracted') + tile(cov.negated, 'negated') + tile(cov.lowConfidence, 'low conf') +
|
|
237
|
+
tile(cov.satisfied + '/' + cov.checks, 'shape checks') +
|
|
238
|
+
'</div>')
|
|
239
|
+
if (data.topics.length > 0) {
|
|
240
|
+
html += section('topics', '<div class="chips">' + data.topics.map(function (topic) {
|
|
241
|
+
return '<a class="chip" href="#/t/' + enc(topic.name) + '">' + esc(topic.name) + ' <span class="n">' + topic.members + '</span></a>'
|
|
242
|
+
}).join('') + '</div>')
|
|
243
|
+
}
|
|
244
|
+
if (data.violations.total > 0) {
|
|
245
|
+
html += section('shape violations', data.violations.items.map(function (violation) {
|
|
246
|
+
return '<div class="claim">' + entityHtml(violation.entity) +
|
|
247
|
+
'<span class="cmt">' + esc(shapeProblem(violation)) + '</span>' +
|
|
248
|
+
'<span class="cmt">; ' + esc(violation.entity) + ' IS ' + esc(violation.via) + ', ' + esc(violation.type) + ' EXPECTS ' + esc(violation.name) + '</span></div>'
|
|
249
|
+
}).join('') + capNote(data.violations), data.violations.total)
|
|
250
|
+
}
|
|
251
|
+
if (data.review.total > 0) {
|
|
252
|
+
html += section('review candidates <span class="n">conf 0.3–0.7</span>', claimList(data.review.items) + capNote(data.review), data.review.total)
|
|
253
|
+
}
|
|
254
|
+
if (data.disagreements.total > 0) {
|
|
255
|
+
html += section('alias disagreements', data.disagreements.items.map(function (disagreement) {
|
|
256
|
+
return '<p class="none">' + esc(disagreement.about) + ' across ' + disagreement.entities.map(entityHtml).join(', ') + '</p>' +
|
|
257
|
+
claimList(disagreement.rows)
|
|
258
|
+
}).join('') + capNote(data.disagreements), data.disagreements.total)
|
|
259
|
+
}
|
|
260
|
+
if (data.stale.total > 0) {
|
|
261
|
+
html += section('stale', data.stale.items.map(function (stale) {
|
|
262
|
+
return claimHtml(stale.row).replace('<span class="meta">', '<span class="meta">' + stale.ageDays + 'd')
|
|
263
|
+
}).join('') + capNote(data.stale), data.stale.total)
|
|
264
|
+
}
|
|
265
|
+
html += section('recent', claimList(data.recent, { when: true }))
|
|
266
|
+
view.innerHTML = html
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
function entityPage (data) {
|
|
270
|
+
var html = '<h1>' + esc(data.name) + ' <span class="kind">entity</span></h1>'
|
|
271
|
+
if (data.types.length > 0) {
|
|
272
|
+
html += '<p class="aka">IS ' + data.types.map(entityHtml).join(', ') + '</p>'
|
|
273
|
+
}
|
|
274
|
+
if (data.aliases.length > 1) {
|
|
275
|
+
html += '<p class="aka">aka ' + data.aliases.slice(1).map(entityHtml).join(', ') + '</p>'
|
|
276
|
+
}
|
|
277
|
+
if (data.topics.length > 0) {
|
|
278
|
+
html += '<div class="chips">' + data.topics.map(function (name) {
|
|
279
|
+
return '<a class="chip" href="#/t/' + enc(name) + '">' + esc(name) + '</a>'
|
|
280
|
+
}).join('') + '</div>'
|
|
281
|
+
}
|
|
282
|
+
html += section('facts', claimList(data.facts))
|
|
283
|
+
html += section('relations — as subject', claimList(data.out))
|
|
284
|
+
html += section('relations — as object', data.in.length === 0 ? '<p class="none">none</p>' : data.in.map(function (c) {
|
|
285
|
+
var rel = c.rel !== undefined ? '<span class="rel" title="declared inverse — same stored fact read from this side">' + esc(c.rel) + '</span> ' : ''
|
|
286
|
+
return claimHtml(c).replace('<div class="claim">', '<div class="claim">' + rel)
|
|
287
|
+
}).join(''))
|
|
288
|
+
html += section('activity', claimList(data.activity, { when: true }), data.total)
|
|
289
|
+
view.innerHTML = html
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function topicPage (data) {
|
|
293
|
+
var html = '<h1>' + esc(data.name) + ' <span class="kind">topic</span></h1>'
|
|
294
|
+
html += section('members', data.members.length === 0 ? '<p class="none">none</p>' :
|
|
295
|
+
'<div class="chips">' + data.members.map(function (name) {
|
|
296
|
+
return isLiteral(name) ? '<span class="chip">' + esc(name) + '</span>' :
|
|
297
|
+
'<a class="chip" href="#/e/' + enc(name) + '">' + esc(name) + '</a>'
|
|
298
|
+
}).join('') + '</div>', data.members.length)
|
|
299
|
+
view.innerHTML = html
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
function historyPage (data) {
|
|
303
|
+
var current = data.rows[data.rows.length - 1]
|
|
304
|
+
var html = '<h1>' + esc(current.line) + ' <span class="kind">belief history</span></h1>'
|
|
305
|
+
html += '<p class="linked">claim key <code>' + esc(data.key) + '</code> · ' + data.rows.length +
|
|
306
|
+
' event(s) · oldest first, the last row is current belief</p>'
|
|
307
|
+
html += claimList(data.rows, { when: true, bar: true })
|
|
308
|
+
view.innerHTML = html
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
function treeHtml (nodes) {
|
|
312
|
+
if (nodes.length === 0) { return '<p class="none">none</p>' }
|
|
313
|
+
return '<ul class="tree">' + nodes.map(function (node) {
|
|
314
|
+
return '<li><span class="role">' + esc(node.role || '') + '</span>' +
|
|
315
|
+
claimHtml(node.row) +
|
|
316
|
+
(node.repeat ? '<span class="rep">re-stated — rendered above</span>' :
|
|
317
|
+
node.truncated ? '<span class="rep">depth cap reached — deeper rows exist, continue from this row's lineage</span>' :
|
|
318
|
+
treeHtml0(node.children)) +
|
|
319
|
+
'</li>'
|
|
320
|
+
}).join('') + '</ul>'
|
|
321
|
+
}
|
|
322
|
+
function treeHtml0 (nodes) { return nodes.length === 0 ? '' : treeHtml(nodes) }
|
|
323
|
+
|
|
324
|
+
function lineagePage (data) {
|
|
325
|
+
var html = '<h1>' + esc(data.row.line) + ' <span class="kind">lineage</span></h1>'
|
|
326
|
+
html += claimHtml(data.row)
|
|
327
|
+
html += section('cites — why this is believed (BECAUSE premises, VIA rules, WHEN conditions)', treeHtml(data.cites))
|
|
328
|
+
html += section('cited by — what depends on it', treeHtml(data.citedBy))
|
|
329
|
+
view.innerHTML = html
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
function searchPage (text, data) {
|
|
333
|
+
searchBox.value = text
|
|
334
|
+
view.innerHTML = '<h1>' + esc(text) + ' <span class="kind">search</span></h1>' +
|
|
335
|
+
section('matches', claimList(data, { when: true }), data.length)
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
function show (promise, render) {
|
|
339
|
+
view.innerHTML = '<p class="none">loading…</p>'
|
|
340
|
+
promise.then(render).catch(function (error) {
|
|
341
|
+
view.innerHTML = '<p class="err">' + esc(error.message) + '</p>'
|
|
342
|
+
})
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
function route () {
|
|
346
|
+
var hash = location.hash || '#/'
|
|
347
|
+
var aliases = aliasBox.checked
|
|
348
|
+
var match
|
|
349
|
+
if ((match = hash.match(/^#\\/e\\/(.+)$/))) {
|
|
350
|
+
show(api('entity', { name: decodeURIComponent(match[1]), aliases: aliases }), entityPage)
|
|
351
|
+
} else if ((match = hash.match(/^#\\/t\\/(.+)$/))) {
|
|
352
|
+
show(api('topic', { name: decodeURIComponent(match[1]), aliases: aliases }), topicPage)
|
|
353
|
+
} else if ((match = hash.match(/^#\\/k\\/(.+)$/))) {
|
|
354
|
+
show(api('history', { key: decodeURIComponent(match[1]) }), historyPage)
|
|
355
|
+
} else if ((match = hash.match(/^#\\/l\\/(.+)$/))) {
|
|
356
|
+
show(api('lineage', { id: decodeURIComponent(match[1]) }), lineagePage)
|
|
357
|
+
} else if ((match = hash.match(/^#\\/s\\/(.+)$/))) {
|
|
358
|
+
var text = decodeURIComponent(match[1])
|
|
359
|
+
show(api('search', { q: text }), function (data) { searchPage(text, data) })
|
|
360
|
+
} else {
|
|
361
|
+
show(api('overview'), dashboard)
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
window.addEventListener('hashchange', route)
|
|
365
|
+
route()
|
|
366
|
+
</script>
|
|
367
|
+
</body>
|
|
368
|
+
</html>
|
|
369
|
+
`;
|
|
370
|
+
//# sourceMappingURL=page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/page.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoW3B,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `cave report` (spec §31) — templated markdown rendered from CAVE-Q
|
|
3
|
+
* results, claim keys as citations.
|
|
4
|
+
*
|
|
5
|
+
* A template is an ordinary markdown document with two live constructs:
|
|
6
|
+
*
|
|
7
|
+
* - a fenced ```cave-q block — first line a CAVE-Q pattern (§12.1),
|
|
8
|
+
* following `WHERE` lines its filters (§12.2), the rest a markdown
|
|
9
|
+
* fragment rendered once per solution with `?var` bindings
|
|
10
|
+
* substituted (no fragment: the solution as `cave query` prints it,
|
|
11
|
+
* as a cited bullet);
|
|
12
|
+
* - an inline `` `cave-q: <pattern>` `` splice — a code span of any
|
|
13
|
+
* delimiter length (```` ``cave-q: …`` ```` when the pattern carries a
|
|
14
|
+
* backtick code literal), exactly one variable, exactly one solution,
|
|
15
|
+
* replaced by the bound value; anything else is a problem (§25.2's
|
|
16
|
+
* determinism, and `--resolve` is the knob when sources contest the
|
|
17
|
+
* fact, §26).
|
|
18
|
+
*
|
|
19
|
+
* Every solution that matched a stored row cites it: `[^cN]` footnote
|
|
20
|
+
* markers land at the fragment's `[^?]` placeholder (appended when
|
|
21
|
+
* absent), and the definitions — the row's canonical line, tx date and
|
|
22
|
+
* claim key (§9.2) — collect at the end of the document, one per row.
|
|
23
|
+
* Everything else in the template passes through verbatim, other fenced
|
|
24
|
+
* blocks included.
|
|
25
|
+
*/
|
|
26
|
+
import { Sensitivity } from '@cavelang/store';
|
|
27
|
+
import type { Store } from '@cavelang/store';
|
|
28
|
+
export type Problem = {
|
|
29
|
+
/** 1-based template line of the query that failed. */
|
|
30
|
+
readonly line: number;
|
|
31
|
+
readonly message: string;
|
|
32
|
+
};
|
|
33
|
+
export type ReportOptions = {
|
|
34
|
+
/** Highest sensitivity level allowed in the deliverable (default `internal`, spec §9.7). */
|
|
35
|
+
readonly maxSensitivity?: Sensitivity.Level;
|
|
36
|
+
/** Queries match through the §13.6 alias closure. */
|
|
37
|
+
readonly aliases?: boolean;
|
|
38
|
+
/** Queries match resolved winners only (spec §26). */
|
|
39
|
+
readonly resolve?: boolean;
|
|
40
|
+
/** Queries resolve beliefs as of a past moment (spec §12.3). */
|
|
41
|
+
readonly asOf?: string;
|
|
42
|
+
/** Queries anchor in valid time (spec §32.4): time-scoped claims filter, trajectories interpolate. */
|
|
43
|
+
readonly at?: string;
|
|
44
|
+
};
|
|
45
|
+
export type Report = {
|
|
46
|
+
readonly markdown: string;
|
|
47
|
+
/** Distinct rows cited — the number of footnote definitions. */
|
|
48
|
+
readonly citations: number;
|
|
49
|
+
readonly problems: readonly Problem[];
|
|
50
|
+
};
|
|
51
|
+
export declare const report: (store: Store, template: string, options?: ReportOptions) => Report;
|
|
52
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAOH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAG5C,MAAM,MAAM,OAAO,GAAG;IACpB,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,4FAA4F;IAC5F,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,KAAK,CAAA;IAC3C,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CACtC,CAAA;AAgXD,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,UAAU,MAAM,EAAE,UAAS,aAAkB,KAAG,MAEzC,CAAA"}
|