@graview/core 0.1.18 → 0.1.20
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/dist/arrangement.d.ts.map +1 -1
- package/dist/arrangement.js +1 -1
- package/dist/arrangement.js.map +1 -1
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/capital.d.ts +3 -0
- package/dist/capital.d.ts.map +1 -0
- package/dist/capital.js +3 -0
- package/dist/capital.js.map +1 -0
- package/dist/cli/create.d.ts +2 -0
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +38 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/describe.d.ts.map +1 -1
- package/dist/cli/describe.js +9 -3
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/docs.d.ts.map +1 -1
- package/dist/cli/docs.js +2 -9
- package/dist/cli/docs.js.map +1 -1
- package/dist/days.d.ts +12 -0
- package/dist/days.d.ts.map +1 -0
- package/dist/days.js +33 -0
- package/dist/days.js.map +1 -0
- package/dist/document/blocks.d.ts.map +1 -1
- package/dist/document/blocks.js +2 -2
- package/dist/document/blocks.js.map +1 -1
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +26 -4
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/describe-place.d.ts +3 -1
- package/dist/document/describe-place.d.ts.map +1 -1
- package/dist/document/describe-place.js +10 -9
- package/dist/document/describe-place.js.map +1 -1
- package/dist/document/diff.d.ts.map +1 -1
- package/dist/document/diff.js +7 -5
- package/dist/document/diff.js.map +1 -1
- package/dist/document/edit.d.ts.map +1 -1
- package/dist/document/edit.js +28 -11
- package/dist/document/edit.js.map +1 -1
- package/dist/document/migrate.d.ts +2 -1
- package/dist/document/migrate.d.ts.map +1 -1
- package/dist/document/migrate.js +1 -1
- package/dist/document/migrate.js.map +1 -1
- package/dist/document/rule-line.d.ts +33 -0
- package/dist/document/rule-line.d.ts.map +1 -0
- package/dist/document/rule-line.js +512 -0
- package/dist/document/rule-line.js.map +1 -0
- package/dist/document/rules.d.ts.map +1 -1
- package/dist/document/rules.js +7 -0
- package/dist/document/rules.js.map +1 -1
- package/dist/document/schema.d.ts +2 -0
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +2 -0
- package/dist/document/schema.js.map +1 -1
- package/dist/document/template.d.ts.map +1 -1
- package/dist/document/template.js +5 -2
- package/dist/document/template.js.map +1 -1
- package/dist/document/to-document.d.ts +2 -1
- package/dist/document/to-document.d.ts.map +1 -1
- package/dist/document/to-document.js.map +1 -1
- package/dist/index.d.ts +11 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -5
- package/dist/index.js.map +1 -1
- package/dist/intelligence-bridge.d.ts +28 -0
- package/dist/intelligence-bridge.d.ts.map +1 -1
- package/dist/intelligence-bridge.js +10 -0
- package/dist/intelligence-bridge.js.map +1 -1
- package/dist/invariants/broken.d.ts +9 -0
- package/dist/invariants/broken.d.ts.map +1 -0
- package/dist/invariants/broken.js +14 -0
- package/dist/invariants/broken.js.map +1 -0
- package/dist/invariants/engine.d.ts.map +1 -1
- package/dist/invariants/engine.js +14 -1
- package/dist/invariants/engine.js.map +1 -1
- package/dist/invariants/line.d.ts +59 -0
- package/dist/invariants/line.d.ts.map +1 -0
- package/dist/invariants/line.js +69 -0
- package/dist/invariants/line.js.map +1 -0
- package/dist/invariants/types.d.ts +49 -0
- package/dist/invariants/types.d.ts.map +1 -1
- package/dist/lines.d.ts +33 -0
- package/dist/lines.d.ts.map +1 -0
- package/dist/lines.js +57 -0
- package/dist/lines.js.map +1 -0
- package/dist/places.d.ts +52 -0
- package/dist/places.d.ts.map +1 -1
- package/dist/places.js +89 -20
- package/dist/places.js.map +1 -1
- package/dist/scaffold/agents.d.ts +17 -0
- package/dist/scaffold/agents.d.ts.map +1 -0
- package/dist/scaffold/agents.js +78 -0
- package/dist/scaffold/agents.js.map +1 -0
- package/dist/scaffold/index.d.ts.map +1 -1
- package/dist/scaffold/index.js +7 -3
- package/dist/scaffold/index.js.map +1 -1
- package/dist/scaffold/project.d.ts +1 -1
- package/dist/scaffold/project.d.ts.map +1 -1
- package/dist/scaffold/project.js +23 -5
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scene-districts.d.ts.map +1 -1
- package/dist/scene-districts.js +2 -2
- package/dist/scene-districts.js.map +1 -1
- package/dist/schema/define-node.d.ts +38 -2
- package/dist/schema/define-node.d.ts.map +1 -1
- package/dist/schema/define-node.js +56 -13
- package/dist/schema/define-node.js.map +1 -1
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +57 -17
- package/dist/search.js.map +1 -1
- package/dist/store.d.ts +7 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +13 -1
- package/dist/store.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/via.d.ts +15 -0
- package/dist/via.d.ts.map +1 -0
- package/dist/via.js +29 -0
- package/dist/via.js.map +1 -0
- package/dist/views/types.d.ts +46 -0
- package/dist/views/types.d.ts.map +1 -1
- package/dist/views/types.js +34 -1
- package/dist/views/types.js.map +1 -1
- package/dist/who.d.ts +0 -6
- package/dist/who.d.ts.map +1 -1
- package/dist/who.js +0 -20
- package/dist/who.js.map +1 -1
- package/package.json +5 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB;;;;;GAKG;AACH,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGvD,gEAAgE;AAChE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,4 +70,32 @@ export type DecisionBridgeAnswer = {
|
|
|
70
70
|
readonly error: string;
|
|
71
71
|
readonly status?: number;
|
|
72
72
|
};
|
|
73
|
+
/**
|
|
74
|
+
* THE DOOR A HOST'S MODEL IS REACHED BY in development: the dev server
|
|
75
|
+
* holds `ANTHROPIC_API_KEY` from the environment it was started in, the
|
|
76
|
+
* page holds the words. GET says whether a key is there — and, when it is
|
|
77
|
+
* not, how to set one, which is the only place that sentence is said: a
|
|
78
|
+
* built page has no server here, so its probe finds nothing and its seat
|
|
79
|
+
* says only what any product's says.
|
|
80
|
+
*/
|
|
81
|
+
export declare const AI_BRIDGE_PATH = "/__graview/ai";
|
|
82
|
+
/** GET — is a model reachable through this server, and if not, how to make it so. */
|
|
83
|
+
export type AiBridgeStatus = {
|
|
84
|
+
readonly configured: true;
|
|
85
|
+
readonly model: string;
|
|
86
|
+
readonly name: string;
|
|
87
|
+
} | {
|
|
88
|
+
readonly configured: false;
|
|
89
|
+
readonly howTo: string;
|
|
90
|
+
};
|
|
91
|
+
/** POST — a prompt in, as `Completion` takes it. */
|
|
92
|
+
export interface AiBridgeAsk {
|
|
93
|
+
readonly prompt: string;
|
|
94
|
+
}
|
|
95
|
+
/** What comes back: the model's text, or why there is none. Never the key. */
|
|
96
|
+
export type AiBridgeAnswer = {
|
|
97
|
+
readonly text: string;
|
|
98
|
+
} | {
|
|
99
|
+
readonly error: string;
|
|
100
|
+
};
|
|
73
101
|
//# sourceMappingURL=intelligence-bridge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intelligence-bridge.d.ts","sourceRoot":"","sources":["../src/intelligence-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AAEpD,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,8DAA8D;AAC9D,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAIvF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD,6EAA6E;AAC7E,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED,+EAA+E;AAC/E,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACtF,GACD;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"intelligence-bridge.d.ts","sourceRoot":"","sources":["../src/intelligence-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AAEpD,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,8DAA8D;AAC9D,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAIvF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD,6EAA6E;AAC7E,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED,+EAA+E;AAC/E,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACtF,GACD;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAIzD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAE9C,qFAAqF;AACrF,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,8EAA8E;AAC9E,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -28,4 +28,14 @@ export const LOCAL_BRIDGE_PATH = "/__graview/local";
|
|
|
28
28
|
* `pnpm dev` set it once, and the page never sees it.
|
|
29
29
|
*/
|
|
30
30
|
export const DECISION_BRIDGE_PATH = "/__graview/decide";
|
|
31
|
+
/* ------------------------------------------------------ the model door */
|
|
32
|
+
/**
|
|
33
|
+
* THE DOOR A HOST'S MODEL IS REACHED BY in development: the dev server
|
|
34
|
+
* holds `ANTHROPIC_API_KEY` from the environment it was started in, the
|
|
35
|
+
* page holds the words. GET says whether a key is there — and, when it is
|
|
36
|
+
* not, how to set one, which is the only place that sentence is said: a
|
|
37
|
+
* built page has no server here, so its probe finds nothing and its seat
|
|
38
|
+
* says only what any product's says.
|
|
39
|
+
*/
|
|
40
|
+
export const AI_BRIDGE_PATH = "/__graview/ai";
|
|
31
41
|
//# sourceMappingURL=intelligence-bridge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intelligence-bridge.js","sourceRoot":"","sources":["../src/intelligence-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,6DAA6D;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAgBpD,4EAA4E;AAE5E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"intelligence-bridge.js","sourceRoot":"","sources":["../src/intelligence-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,6DAA6D;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAgBpD,4EAA4E;AAE5E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAqBxD,2EAA2E;AAE3E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HOW MANY RULES ARE BROKEN, said as rules: "1 rule broken", "2 rules
|
|
3
|
+
* broken", and "1 rule broken in 3 places" where one rule is broken by
|
|
4
|
+
* several records — never "N problems are not kept".
|
|
5
|
+
*/
|
|
6
|
+
export declare function brokenWords(violations: readonly {
|
|
7
|
+
readonly invariant: string;
|
|
8
|
+
}[]): string;
|
|
9
|
+
//# sourceMappingURL=broken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broken.d.ts","sourceRoot":"","sources":["../../src/invariants/broken.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,SAAS;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAKzF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* Its own module: a page draws the standing on its first load, and a rule's line only where one is drawn (`./line.ts`). */
|
|
2
|
+
/**
|
|
3
|
+
* HOW MANY RULES ARE BROKEN, said as rules: "1 rule broken", "2 rules
|
|
4
|
+
* broken", and "1 rule broken in 3 places" where one rule is broken by
|
|
5
|
+
* several records — never "N problems are not kept".
|
|
6
|
+
*/
|
|
7
|
+
export function brokenWords(violations) {
|
|
8
|
+
const rules = new Set(violations.map((violation) => violation.invariant)).size;
|
|
9
|
+
if (rules === 0)
|
|
10
|
+
return "All rules hold";
|
|
11
|
+
const said = `${rules} ${rules === 1 ? "rule" : "rules"} broken`;
|
|
12
|
+
return violations.length > rules ? `${said} in ${violations.length} places` : said;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=broken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broken.js","sourceRoot":"","sources":["../../src/invariants/broken.ts"],"names":[],"mappings":"AAAA,2HAA2H;AAE3H;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,UAAqD;IAC/E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACzC,MAAM,IAAI,GAAG,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC;IACjE,OAAO,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACrF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/invariants/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/invariants/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAgB,MAAM,qBAAqB,CAAC;AAC7F,OAAO,KAAK,EACV,eAAe,EAEf,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,qBAAa,0BAA2B,SAAQ,KAAK;IAEjD,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM;CAO1B;AAED,wBAAgB,eAAe,CAC7B,CAAC,SAAS,SAAS,EACnB,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAEzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IACJ,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAA;KAAE,CAAC;IAC3F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;CAClF,GACA,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC1B,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EACjD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IACJ,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;CAC3E,GACA,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAe1B;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAiCD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,SAAS,EAC1C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,UAAU,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAC7C,OAAO,GAAE,eAAe,CAAC,CAAC,CAAM,GAC/B,SAAS,EAAE,CA2Eb;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,SAAS,EAAE,CAKb"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isCurrent } from "../schema/define-node.js";
|
|
2
|
+
import { daysAsRead } from "../days.js";
|
|
2
3
|
export class UnregisteredInvariantError extends Error {
|
|
3
4
|
invariant;
|
|
4
5
|
nodeId;
|
|
@@ -110,12 +111,24 @@ export function evaluate(graph, invariants, options = {}) {
|
|
|
110
111
|
* true twins.
|
|
111
112
|
*/
|
|
112
113
|
const seen = new Set();
|
|
113
|
-
return violations
|
|
114
|
+
return violations
|
|
115
|
+
.filter((violation) => {
|
|
114
116
|
const key = `${violation.message}|${[...violation.nodeIds].sort().join(",")}`;
|
|
115
117
|
if (seen.has(key))
|
|
116
118
|
return false;
|
|
117
119
|
seen.add(key);
|
|
118
120
|
return true;
|
|
121
|
+
})
|
|
122
|
+
/*
|
|
123
|
+
* A RULE'S SENTENCE SAYS A DAY AS A PERSON READS IT. A rule written in
|
|
124
|
+
* code says what it likes, and "was due 2026-08-28" reached the bar, the
|
|
125
|
+
* problems and the seat while the task's own card said "28 Aug 2026".
|
|
126
|
+
* Every message is a sentence for a person, so every day in it is said
|
|
127
|
+
* the way the glance says it (`daysAsRead`).
|
|
128
|
+
*/
|
|
129
|
+
.map((violation) => {
|
|
130
|
+
const said = daysAsRead(violation.message);
|
|
131
|
+
return said === violation.message ? violation : { ...violation, message: said };
|
|
119
132
|
});
|
|
120
133
|
}
|
|
121
134
|
/** Violations that implicate any of the given node ids. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/invariants/engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/invariants/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** What a part of a rule's line is, for how it is drawn: a name quiet, a value plain, a symbol set apart. */
|
|
2
|
+
export type RulePartAs = "name" | "op" | "value" | "word" | "open" | "close";
|
|
3
|
+
export interface RulePart {
|
|
4
|
+
readonly text: string;
|
|
5
|
+
readonly as: RulePartAs;
|
|
6
|
+
/** What it says aloud, where that is not the text: "at least" for ≥, "empty" for —. */
|
|
7
|
+
readonly said?: string;
|
|
8
|
+
/** Whether a space comes before it, as the words are spaced: none after "(", before ")", ",", ":" or "'s". */
|
|
9
|
+
readonly space?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A rule's line: the kind it judges, what must hold and which records it
|
|
13
|
+
* judges. On a violation, `record` names the record it found broken and the
|
|
14
|
+
* parts carry that record's values, the comparison turned the way it
|
|
15
|
+
* actually stands: "margin 9% < target margin 14%".
|
|
16
|
+
*/
|
|
17
|
+
export interface RuleLine {
|
|
18
|
+
/** The kind it judges; absent for a rule over the whole graph. */
|
|
19
|
+
readonly kind?: string;
|
|
20
|
+
/** What must hold — or, on a violation, what was found instead. */
|
|
21
|
+
readonly parts: readonly RulePart[];
|
|
22
|
+
/** Only the records for which this holds are judged. Absent on a violation: the record was one of them. */
|
|
23
|
+
readonly when?: readonly RulePart[];
|
|
24
|
+
/** The record found broken, by its label. */
|
|
25
|
+
readonly record?: string;
|
|
26
|
+
/** The shape in words, without the record: "margin ≥ target margin, when price > $0". */
|
|
27
|
+
readonly text: string;
|
|
28
|
+
/** The same, said: "margin at least target margin, when price more than $0". */
|
|
29
|
+
readonly said: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Each part with whether a space comes before it — none after an opening
|
|
33
|
+
* bracket, before a closing one, a comma, a colon or a possessive — so a
|
|
34
|
+
* page drawing the parts one by one spaces them as the words are spaced.
|
|
35
|
+
*/
|
|
36
|
+
export declare function ruleSpacing(parts: readonly RulePart[]): readonly {
|
|
37
|
+
readonly part: RulePart;
|
|
38
|
+
readonly space: boolean;
|
|
39
|
+
}[];
|
|
40
|
+
/** The parts as a person reads them: "margin ≥ target margin". */
|
|
41
|
+
export declare function ruleText(parts: readonly RulePart[]): string;
|
|
42
|
+
/** The parts as a screen reader says them: "margin at least target margin". */
|
|
43
|
+
export declare function ruleSpoken(parts: readonly RulePart[]): string;
|
|
44
|
+
/**
|
|
45
|
+
* The whole line in words: the record and what was found, or what must
|
|
46
|
+
* hold and when. `spoken` says the symbols in words.
|
|
47
|
+
*/
|
|
48
|
+
export declare function ruleLineWords(line: RuleLine, spoken?: boolean): string;
|
|
49
|
+
/** A line made whole: each part spaced as the words are, and the shape in words and said. */
|
|
50
|
+
export declare function finishedLine(line: Omit<RuleLine, "text" | "said">): RuleLine;
|
|
51
|
+
/**
|
|
52
|
+
* WHAT A PROBLEM SAYS, in one line: the rule's shape with the record's own
|
|
53
|
+
* values where the rule has one, else the sentence the rule wrote.
|
|
54
|
+
*/
|
|
55
|
+
export declare function problemWords(violation: {
|
|
56
|
+
readonly message: string;
|
|
57
|
+
readonly line?: RuleLine;
|
|
58
|
+
}, spoken?: boolean): string;
|
|
59
|
+
//# sourceMappingURL=line.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line.d.ts","sourceRoot":"","sources":["../../src/invariants/line.ts"],"names":[],"mappings":"AAgBA,6GAA6G;AAC7G,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,uFAAuF;IACvF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,8GAA8G;IAC9G,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,2GAA2G;IAC3G,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,CAUvH;AAQD,kEAAkE;AAClE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,CAE3D;AAED,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,CAE7D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,UAAQ,GAAG,MAAM,CAGpE;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,QAAQ,CAM5E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAE,EAAE,MAAM,UAAQ,GAAG,MAAM,CAEtH"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A RULE, SAID AS ITS SHAPE.
|
|
3
|
+
*
|
|
4
|
+
* A rule written in the rule language has a structure a person can read —
|
|
5
|
+
* "margin ≥ target margin, when price > 0" — and that structure says more,
|
|
6
|
+
* and says it more plainly, than a title an author wrote around it ("A
|
|
7
|
+
* scenario keeps the target margin"). The line is worked out where the rule
|
|
8
|
+
* is judged (`@graview/core/document`, beside the evaluator); what lives
|
|
9
|
+
* here is only its shape and how it is joined into words, so a page that
|
|
10
|
+
* draws a rule carries no parser and no evaluator to do it.
|
|
11
|
+
*
|
|
12
|
+
* Every symbol is one a person knows from arithmetic — ≥ ≤ < > = ≠, ∈ for
|
|
13
|
+
* "is one of", — for nothing — and each carries the words a screen reader
|
|
14
|
+
* says instead: "margin at least target margin".
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Each part with whether a space comes before it — none after an opening
|
|
18
|
+
* bracket, before a closing one, a comma, a colon or a possessive — so a
|
|
19
|
+
* page drawing the parts one by one spaces them as the words are spaced.
|
|
20
|
+
*/
|
|
21
|
+
export function ruleSpacing(parts) {
|
|
22
|
+
const out = [];
|
|
23
|
+
let glue = true;
|
|
24
|
+
for (const part of parts) {
|
|
25
|
+
if (part.text.length === 0)
|
|
26
|
+
continue;
|
|
27
|
+
const tight = part.as === "close" || part.text === "," || part.text === ":" || part.text.startsWith("'") || glue;
|
|
28
|
+
out.push({ part, space: !tight });
|
|
29
|
+
glue = part.as === "open";
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
function joined(parts, spoken) {
|
|
34
|
+
return ruleSpacing(parts)
|
|
35
|
+
.map(({ part, space }) => `${space ? " " : ""}${spoken ? (part.said ?? part.text) : part.text}`)
|
|
36
|
+
.join("");
|
|
37
|
+
}
|
|
38
|
+
/** The parts as a person reads them: "margin ≥ target margin". */
|
|
39
|
+
export function ruleText(parts) {
|
|
40
|
+
return joined(parts, false);
|
|
41
|
+
}
|
|
42
|
+
/** The parts as a screen reader says them: "margin at least target margin". */
|
|
43
|
+
export function ruleSpoken(parts) {
|
|
44
|
+
return joined(parts, true);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The whole line in words: the record and what was found, or what must
|
|
48
|
+
* hold and when. `spoken` says the symbols in words.
|
|
49
|
+
*/
|
|
50
|
+
export function ruleLineWords(line, spoken = false) {
|
|
51
|
+
const held = spoken ? line.said : line.text;
|
|
52
|
+
return line.record !== undefined ? `${line.record} — ${held}` : held;
|
|
53
|
+
}
|
|
54
|
+
/** A line made whole: each part spaced as the words are, and the shape in words and said. */
|
|
55
|
+
export function finishedLine(line) {
|
|
56
|
+
const spaced = (parts) => ruleSpacing(parts).map(({ part, space }) => ({ ...part, space }));
|
|
57
|
+
const parts = spaced(line.parts);
|
|
58
|
+
const when = line.when && line.when.length > 0 ? spaced(line.when) : undefined;
|
|
59
|
+
const say = (spoken) => `${joined(parts, spoken)}${when ? `, when ${joined(when, spoken)}` : ""}`;
|
|
60
|
+
return { ...line, parts, ...(when ? { when } : {}), text: say(false), said: say(true) };
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* WHAT A PROBLEM SAYS, in one line: the rule's shape with the record's own
|
|
64
|
+
* values where the rule has one, else the sentence the rule wrote.
|
|
65
|
+
*/
|
|
66
|
+
export function problemWords(violation, spoken = false) {
|
|
67
|
+
return violation.line ? ruleLineWords(violation.line, spoken) : violation.message;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=line.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line.js","sourceRoot":"","sources":["../../src/invariants/line.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
import type { GraphReader } from "../graph/types.js";
|
|
2
2
|
import type { AnySchema, KindOfSchema, NodeOfKind, NodeOfSchema } from "../schema/schema.js";
|
|
3
|
+
import type { RuleLine } from "./line.js";
|
|
4
|
+
import type { Expr } from "../document/expr/parse.js";
|
|
5
|
+
import type { KindShape } from "../document/expr/evaluate.js";
|
|
6
|
+
import type { TemplatePart } from "../document/template.js";
|
|
7
|
+
/** A field's declared format and unit: money in dollars, a fraction said as a percent. */
|
|
8
|
+
export interface FieldFormat {
|
|
9
|
+
readonly format?: string;
|
|
10
|
+
readonly unit?: string;
|
|
11
|
+
}
|
|
12
|
+
/** What a rule written in the rule language is said from (`InvariantDefinition.shape`). */
|
|
13
|
+
export interface RuleShapeSource {
|
|
14
|
+
/** The kind it judges, or `"graph"`. */
|
|
15
|
+
readonly over: string;
|
|
16
|
+
readonly require: Expr;
|
|
17
|
+
readonly when?: Expr | undefined;
|
|
18
|
+
/** The rule's own sentence, parsed: the formats it gives its names (`{margin|percent}`) are its values' formats too. */
|
|
19
|
+
readonly says?: readonly TemplatePart[] | undefined;
|
|
20
|
+
/** The document's kinds, where the rule is a document's: each field's declared format and unit. */
|
|
21
|
+
readonly declared?: Readonly<Record<string, {
|
|
22
|
+
readonly fields?: Readonly<Record<string, FieldFormat & {
|
|
23
|
+
readonly type?: string;
|
|
24
|
+
}>>;
|
|
25
|
+
}>>;
|
|
26
|
+
/** The app's currency and locale. */
|
|
27
|
+
readonly money?: {
|
|
28
|
+
readonly currency?: string;
|
|
29
|
+
readonly locale?: string;
|
|
30
|
+
};
|
|
31
|
+
/** What each kind holds, as the rule is judged with; read from the schema when absent. */
|
|
32
|
+
readonly kinds?: ReadonlyMap<string, KindShape>;
|
|
33
|
+
/** The day the rule is judged on. */
|
|
34
|
+
readonly today?: () => string;
|
|
35
|
+
}
|
|
3
36
|
/**
|
|
4
37
|
* A mutation that would resolve a violation. This field is the seam between
|
|
5
38
|
* the invariant engine and derived affordances: it is why selecting an
|
|
@@ -32,6 +65,14 @@ export interface Violation {
|
|
|
32
65
|
/** Ids of the nodes that cause the violation, for cross-plane highlighting. */
|
|
33
66
|
readonly nodeIds: readonly string[];
|
|
34
67
|
readonly repairs: readonly Repair[];
|
|
68
|
+
/**
|
|
69
|
+
* The rule's shape with the record's own values, where the rule is
|
|
70
|
+
* written in the rule language: "margin 44% < target margin 50%". Not
|
|
71
|
+
* set by the engine: a surface that draws problems asks
|
|
72
|
+
* `@graview/core/lines` (`withLines`) when it draws them, so a page that
|
|
73
|
+
* judges rules carries none of the words; `problemWords` says it.
|
|
74
|
+
*/
|
|
75
|
+
readonly line?: RuleLine;
|
|
35
76
|
}
|
|
36
77
|
/** Free-form evaluation context an app threads through (e.g. a week start). */
|
|
37
78
|
export type InvariantContext = Readonly<Record<string, unknown>>;
|
|
@@ -57,6 +98,14 @@ export interface InvariantDefinition<S extends AnySchema = AnySchema> {
|
|
|
57
98
|
readonly when?: string;
|
|
58
99
|
readonly says?: string;
|
|
59
100
|
};
|
|
101
|
+
/**
|
|
102
|
+
* What the rule's line is said from, on a rule written in the rule
|
|
103
|
+
* language: its parsed judgment and how its values are written. Data, so
|
|
104
|
+
* a page that judges carries no renderer: `@graview/core/lines` reads it
|
|
105
|
+
* — "margin ≥ target margin, when price > $0". A rule that is a function
|
|
106
|
+
* has only its `label` to show.
|
|
107
|
+
*/
|
|
108
|
+
readonly shape?: RuleShapeSource;
|
|
60
109
|
readonly label?: string;
|
|
61
110
|
readonly description?: string;
|
|
62
111
|
readonly scope: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/invariants/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/invariants/types.ts"],"names":[],"mappings":"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"}
|
package/dist/lines.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@graview/core/lines` — A RULE SAID AS ITS SHAPE, fetched by what draws one.
|
|
3
|
+
*
|
|
4
|
+
* A rule written in the rule language carries its parsed judgment
|
|
5
|
+
* (`InvariantDefinition.shape`); this says it in the declaration's words —
|
|
6
|
+
* "margin ≥ target margin, when plan's price > $0" — and says what a record
|
|
7
|
+
* that breaks it holds: "A club on Team — margin 44% < target margin 50%".
|
|
8
|
+
* Its own entry because the words are needed only where a rule is drawn:
|
|
9
|
+
* a page that judges rules on its first load does not carry them, and the
|
|
10
|
+
* problems' rows, the problems page and the seat fetch them as they draw.
|
|
11
|
+
*/
|
|
12
|
+
import type { AnySchema } from "./schema/schema.js";
|
|
13
|
+
import type { GraphReader } from "./graph/types.js";
|
|
14
|
+
import type { InvariantDefinition, Violation } from "./invariants/types.js";
|
|
15
|
+
import type { RuleLine } from "./invariants/line.js";
|
|
16
|
+
export { brokenLineOf, ruleLineOf } from "./document/rule-line.js";
|
|
17
|
+
export { problemWords, ruleLineWords, ruleSpacing, ruleSpoken, ruleText } from "./invariants/line.js";
|
|
18
|
+
export type { LineWords, LinedRule } from "./document/rule-line.js";
|
|
19
|
+
/** A rule's line from its declaration, or nothing for a rule that is a function. */
|
|
20
|
+
export declare function ruleLine(invariant: Pick<InvariantDefinition, "shape">, schema: AnySchema): RuleLine | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* THE PROBLEMS, EACH WITH ITS LINE where its rule has a shape: the record's
|
|
23
|
+
* values, the comparison turned the way it stands. A violation of a rule
|
|
24
|
+
* that is a function, or one that could not be judged, is handed back as it
|
|
25
|
+
* came. Never throws: a line that cannot be worked out is left off.
|
|
26
|
+
*/
|
|
27
|
+
export declare function withLines<V extends Violation>(source: {
|
|
28
|
+
readonly graph: GraphReader;
|
|
29
|
+
readonly schema: AnySchema;
|
|
30
|
+
allInvariants(): readonly Pick<InvariantDefinition, "name" | "shape">[];
|
|
31
|
+
today?(): string | undefined;
|
|
32
|
+
}, violations: readonly V[]): V[];
|
|
33
|
+
//# sourceMappingURL=lines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lines.d.ts","sourceRoot":"","sources":["../src/lines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAmB,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACtG,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAoBpE,oFAAoF;AACpF,wBAAgB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAE/G;AAID;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,EAC3C,MAAM,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,aAAa,IAAI,SAAS,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAAC,KAAK,CAAC,IAAI,MAAM,GAAG,SAAS,CAAA;CAAE,EAC1K,UAAU,EAAE,SAAS,CAAC,EAAE,GACvB,CAAC,EAAE,CAoBL"}
|
package/dist/lines.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { brokenLineOf, formatsSaid, ruleLineOf } from "./document/rule-line.js";
|
|
2
|
+
import { shapesOfSchema } from "./document/rules.js";
|
|
3
|
+
export { brokenLineOf, ruleLineOf } from "./document/rule-line.js";
|
|
4
|
+
export { problemWords, ruleLineWords, ruleSpacing, ruleSpoken, ruleText } from "./invariants/line.js";
|
|
5
|
+
/** A document field's declared format: a margin a percent, a price money in its unit, a date a day. */
|
|
6
|
+
function formatsOf(declared) {
|
|
7
|
+
return (kind, field) => {
|
|
8
|
+
const spec = declared[kind]?.fields?.[field];
|
|
9
|
+
const format = spec?.format ?? (spec?.type === "date" ? "date" : undefined);
|
|
10
|
+
return format || spec?.unit ? { ...(format ? { format } : {}), ...(spec?.unit ? { unit: spec.unit } : {}) } : undefined;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function wordsOf(shape, schema) {
|
|
14
|
+
return {
|
|
15
|
+
schema,
|
|
16
|
+
said: formatsSaid(shape.says),
|
|
17
|
+
...(shape.declared ? { formatOf: formatsOf(shape.declared) } : {}),
|
|
18
|
+
...(shape.money ? { money: shape.money } : {}),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/** A rule's line from its declaration, or nothing for a rule that is a function. */
|
|
22
|
+
export function ruleLine(invariant, schema) {
|
|
23
|
+
return invariant.shape ? ruleLineOf(invariant.shape, wordsOf(invariant.shape, schema)) : undefined;
|
|
24
|
+
}
|
|
25
|
+
const SHAPES = new WeakMap();
|
|
26
|
+
/**
|
|
27
|
+
* THE PROBLEMS, EACH WITH ITS LINE where its rule has a shape: the record's
|
|
28
|
+
* values, the comparison turned the way it stands. A violation of a rule
|
|
29
|
+
* that is a function, or one that could not be judged, is handed back as it
|
|
30
|
+
* came. Never throws: a line that cannot be worked out is left off.
|
|
31
|
+
*/
|
|
32
|
+
export function withLines(source, violations) {
|
|
33
|
+
const rules = new Map(source.allInvariants().map((rule) => [rule.name, rule]));
|
|
34
|
+
return violations.map((violation) => {
|
|
35
|
+
const shape = rules.get(violation.invariant)?.shape;
|
|
36
|
+
if (!shape || violation.line || (violation.status && violation.status !== "violated"))
|
|
37
|
+
return violation;
|
|
38
|
+
const subject = violation.subjectId ? source.graph.getNode(violation.subjectId) : undefined;
|
|
39
|
+
if (shape.over !== "graph" && !subject)
|
|
40
|
+
return violation;
|
|
41
|
+
let kinds = shape.kinds;
|
|
42
|
+
if (!kinds) {
|
|
43
|
+
kinds = SHAPES.get(source.schema);
|
|
44
|
+
if (!kinds)
|
|
45
|
+
SHAPES.set(source.schema, (kinds = shapesOfSchema(source.schema)));
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const today = shape.today?.() ?? source.today?.() ?? new Date().toISOString().slice(0, 10);
|
|
49
|
+
const line = brokenLineOf(shape, wordsOf(shape, source.schema), { graph: source.graph, subject: subject ?? null, kinds, today });
|
|
50
|
+
return { ...violation, line };
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return violation;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=lines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lines.js","sourceRoot":"","sources":["../src/lines.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAkB,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGtG,uGAAuG;AACvG,SAAS,SAAS,CAAC,QAAkD;IACnE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5E,OAAO,MAAM,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1H,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,KAAsB,EAAE,MAAiB;IACxD,OAAO;QACL,MAAM;QACN,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,QAAQ,CAAC,SAA6C,EAAE,MAAiB;IACvF,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACrG,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,OAAO,EAAkC,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CACvB,MAA0K,EAC1K,UAAwB;IAExB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;QACpD,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC;YAAE,OAAO,SAAS,CAAC;QACxG,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACzD,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK;gBAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3F,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACjI,OAAO,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/places.d.ts
CHANGED
|
@@ -156,7 +156,43 @@ export interface PagesArrangement {
|
|
|
156
156
|
readonly scene?: string;
|
|
157
157
|
/** WHAT THE SWITCH CALLS THE ROUTED FACE (FR-137): "Pages" when the declaration says none. */
|
|
158
158
|
readonly pages?: string;
|
|
159
|
+
/**
|
|
160
|
+
* THE PLACES THAT STAND ON THE BAR (FR-145, ranked): kinds by name or
|
|
161
|
+
* plural and pictures by title or address word, each of which stands on
|
|
162
|
+
* the bar's row beside Home when there is room; every other place folds
|
|
163
|
+
* into "More". Unsaid, the bar derives it (`supportingKinds`): the main
|
|
164
|
+
* kinds and their pictures stand, the machinery folds. At most
|
|
165
|
+
* `MOST_STANDING` stand however many are named.
|
|
166
|
+
*
|
|
167
|
+
* pages: { primary: ["task", "list", "The week"] }
|
|
168
|
+
*/
|
|
169
|
+
readonly primary?: readonly string[];
|
|
159
170
|
}
|
|
171
|
+
/** The most places that stand on the bar's row, Home among them, however much room it has: past it a row is a list to read, not a choice to see. */
|
|
172
|
+
export declare const MOST_STANDING = 6;
|
|
173
|
+
/**
|
|
174
|
+
* THE KINDS THAT SUPPORT THE OTHERS, which fold into the bar's "More" when
|
|
175
|
+
* the declaration names no `pages.primary`:
|
|
176
|
+
*
|
|
177
|
+
* - a kind the home leaves off (`pages.hide`);
|
|
178
|
+
* - a kind of a module drawn only for those who keep it (the
|
|
179
|
+
* installation's people and invitations: `visibility: "admin"`);
|
|
180
|
+
* - a note about other things: a kind whose every tie points out at two
|
|
181
|
+
* or more kinds, and that nothing points at — a reason "about a task
|
|
182
|
+
* or a list", a comment about a plan, a person or a place.
|
|
183
|
+
*
|
|
184
|
+
* Everything else is a main kind. A picture stands with its kind.
|
|
185
|
+
*/
|
|
186
|
+
export declare function supportingKinds(schema: AnySchema, pages: PagesArrangement | undefined, kept?: Iterable<string>): ReadonlySet<string>;
|
|
187
|
+
/**
|
|
188
|
+
* What `pages.primary` names, resolved: the kinds and the places (by
|
|
189
|
+
* `kind|as`) it stands up; undefined when the declaration says nothing.
|
|
190
|
+
* A word that names nothing is passed over (`graview check` says so).
|
|
191
|
+
*/
|
|
192
|
+
export declare function primaryOf(pages: PagesArrangement | undefined, schema: AnySchema, places: readonly Place[]): {
|
|
193
|
+
readonly kinds: ReadonlySet<string>;
|
|
194
|
+
readonly places: ReadonlySet<string>;
|
|
195
|
+
} | undefined;
|
|
160
196
|
/** The scene's address word (FR-132), whatever the declaration calls the scene. */
|
|
161
197
|
export declare const OVERVIEW_SLUG = "overview";
|
|
162
198
|
/** The scene's address on the routed face (FR-132); its stop rides on it as the fragment. */
|
|
@@ -211,4 +247,20 @@ export interface AppPlace {
|
|
|
211
247
|
* to.
|
|
212
248
|
*/
|
|
213
249
|
export declare function placesOf<S extends AnySchema>(app: GraviewApp<S>): readonly AppPlace[];
|
|
250
|
+
/**
|
|
251
|
+
* THE SAME LIST FROM WHAT A FACE HOLDS: the schema, the places its view
|
|
252
|
+
* registry names, and the arrangement — what `placesOf` makes from the
|
|
253
|
+
* declaration, for a seat handed a store and its views rather than the app.
|
|
254
|
+
* One builder, so the two can never name, address or order a place
|
|
255
|
+
* differently.
|
|
256
|
+
*/
|
|
257
|
+
export declare function placesFrom(schema: AnySchema, lensPlaces: readonly Place[], options?: {
|
|
258
|
+
readonly pages?: PagesArrangement;
|
|
259
|
+
readonly lenses?: readonly {
|
|
260
|
+
readonly as: string;
|
|
261
|
+
readonly kinds: readonly string[];
|
|
262
|
+
readonly lens: ShippedLensName;
|
|
263
|
+
}[];
|
|
264
|
+
readonly home?: boolean;
|
|
265
|
+
}): readonly AppPlace[];
|
|
214
266
|
//# sourceMappingURL=places.d.ts.map
|
package/dist/places.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"places.d.ts","sourceRoot":"","sources":["../src/places.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"places.d.ts","sourceRoot":"","sources":["../src/places.ts"],"names":[],"mappings":"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"}
|