@intentius/chant-lexicon-cedar 0.44.8
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 +190 -0
- package/dist/avp/ambient.d.ts +54 -0
- package/dist/avp/ambient.d.ts.map +1 -0
- package/dist/avp/client.d.ts +127 -0
- package/dist/avp/client.d.ts.map +1 -0
- package/dist/avp/describe-resources.d.ts +42 -0
- package/dist/avp/describe-resources.d.ts.map +1 -0
- package/dist/avp/embed.d.ts +120 -0
- package/dist/avp/embed.d.ts.map +1 -0
- package/dist/avp/live-export.d.ts +94 -0
- package/dist/avp/live-export.d.ts.map +1 -0
- package/dist/avp/ownership.d.ts +97 -0
- package/dist/avp/ownership.d.ts.map +1 -0
- package/dist/avp/statement.d.ts +22 -0
- package/dist/avp/statement.d.ts.map +1 -0
- package/dist/avp/store.d.ts +82 -0
- package/dist/avp/store.d.ts.map +1 -0
- package/dist/avp/testdata/mock-transport.d.ts +55 -0
- package/dist/avp/testdata/mock-transport.d.ts.map +1 -0
- package/dist/codegen/docs-cli.d.ts +3 -0
- package/dist/codegen/docs-cli.d.ts.map +1 -0
- package/dist/codegen/docs.d.ts +26 -0
- package/dist/codegen/docs.d.ts.map +1 -0
- package/dist/codegen/emit.d.ts +85 -0
- package/dist/codegen/emit.d.ts.map +1 -0
- package/dist/codegen/generate-cli.d.ts +3 -0
- package/dist/codegen/generate-cli.d.ts.map +1 -0
- package/dist/codegen/generate.d.ts +37 -0
- package/dist/codegen/generate.d.ts.map +1 -0
- package/dist/codegen/naming.d.ts +48 -0
- package/dist/codegen/naming.d.ts.map +1 -0
- package/dist/codegen/package.d.ts +10 -0
- package/dist/codegen/package.d.ts.map +1 -0
- package/dist/composites/deny-by-default-set.d.ts +58 -0
- package/dist/composites/deny-by-default-set.d.ts.map +1 -0
- package/dist/composites/index.d.ts +12 -0
- package/dist/composites/index.d.ts.map +1 -0
- package/dist/composites/owner-can-manage.d.ts +48 -0
- package/dist/composites/owner-can-manage.d.ts.map +1 -0
- package/dist/config.d.ts +102 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/coverage.d.ts +59 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/detect.d.ts +18 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/generated/index.d.ts +251 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/runtime.d.ts +2 -0
- package/dist/generated/runtime.d.ts.map +1 -0
- package/dist/import/adapter.d.ts +21 -0
- package/dist/import/adapter.d.ts.map +1 -0
- package/dist/import/clause-text.d.ts +38 -0
- package/dist/import/clause-text.d.ts.map +1 -0
- package/dist/import/generator.d.ts +53 -0
- package/dist/import/generator.d.ts.map +1 -0
- package/dist/import/parser.d.ts +57 -0
- package/dist/import/parser.d.ts.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/init-templates.d.ts +32 -0
- package/dist/init-templates.d.ts.map +1 -0
- package/dist/integrity.json +22 -0
- package/dist/lint/audit-catalog.d.ts +29 -0
- package/dist/lint/audit-catalog.d.ts.map +1 -0
- package/dist/lint/post-synth/cedar-helpers.d.ts +97 -0
- package/dist/lint/post-synth/cedar-helpers.d.ts.map +1 -0
- package/dist/lint/post-synth/cedc010.d.ts +17 -0
- package/dist/lint/post-synth/cedc010.d.ts.map +1 -0
- package/dist/lint/post-synth/cedc011.d.ts +17 -0
- package/dist/lint/post-synth/cedc011.d.ts.map +1 -0
- package/dist/lint/post-synth/cedc012.d.ts +21 -0
- package/dist/lint/post-synth/cedc012.d.ts.map +1 -0
- package/dist/lint/post-synth/cedc013.d.ts +20 -0
- package/dist/lint/post-synth/cedc013.d.ts.map +1 -0
- package/dist/lint/post-synth/cedc014.d.ts +19 -0
- package/dist/lint/post-synth/cedc014.d.ts.map +1 -0
- package/dist/lint/post-synth/cede010.d.ts +34 -0
- package/dist/lint/post-synth/cede010.d.ts.map +1 -0
- package/dist/lint/post-synth/cede011.d.ts +22 -0
- package/dist/lint/post-synth/cede011.d.ts.map +1 -0
- package/dist/lint/post-synth/ceds010.d.ts +24 -0
- package/dist/lint/post-synth/ceds010.d.ts.map +1 -0
- package/dist/lint/post-synth/ceds011.d.ts +19 -0
- package/dist/lint/post-synth/ceds011.d.ts.map +1 -0
- package/dist/lint/post-synth/ceds012.d.ts +17 -0
- package/dist/lint/post-synth/ceds012.d.ts.map +1 -0
- package/dist/lint/post-synth/index.d.ts +3 -0
- package/dist/lint/post-synth/index.d.ts.map +1 -0
- package/dist/lint/post-synth/wasm-helpers.d.ts +108 -0
- package/dist/lint/post-synth/wasm-helpers.d.ts.map +1 -0
- package/dist/lint/rules/index.d.ts +10 -0
- package/dist/lint/rules/index.d.ts.map +1 -0
- package/dist/lint/rules/policy-shape.d.ts +31 -0
- package/dist/lint/rules/policy-shape.d.ts.map +1 -0
- package/dist/lsp/completions.d.ts +24 -0
- package/dist/lsp/completions.d.ts.map +1 -0
- package/dist/lsp/hover.d.ts +11 -0
- package/dist/lsp/hover.d.ts.map +1 -0
- package/dist/lsp/registry.d.ts +45 -0
- package/dist/lsp/registry.d.ts.map +1 -0
- package/dist/manifest.json +8 -0
- package/dist/mcp/index.d.ts +34 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/policy-coverage.d.ts +81 -0
- package/dist/mcp/policy-coverage.d.ts.map +1 -0
- package/dist/meta.json +699 -0
- package/dist/okf/index.md +37 -0
- package/dist/okf/rules/CEDC001.md +11 -0
- package/dist/okf/rules/CEDC010.md +11 -0
- package/dist/okf/rules/CEDC011.md +15 -0
- package/dist/okf/rules/CEDC012.md +11 -0
- package/dist/okf/rules/CEDC013.md +15 -0
- package/dist/okf/rules/CEDC014.md +15 -0
- package/dist/okf/rules/CEDE010.md +15 -0
- package/dist/okf/rules/CEDE011.md +15 -0
- package/dist/okf/rules/CEDS010.md +15 -0
- package/dist/okf/rules/CEDS011.md +11 -0
- package/dist/okf/rules/CEDS012.md +15 -0
- package/dist/okf/types/AdminAction.md +14 -0
- package/dist/okf/types/Application.md +14 -0
- package/dist/okf/types/ApproveAction.md +13 -0
- package/dist/okf/types/CommentAction.md +14 -0
- package/dist/okf/types/CreateAction.md +14 -0
- package/dist/okf/types/DeleteAction.md +14 -0
- package/dist/okf/types/Document.md +18 -0
- package/dist/okf/types/Folder.md +15 -0
- package/dist/okf/types/Group.md +14 -0
- package/dist/okf/types/ListAction.md +14 -0
- package/dist/okf/types/Policy.md +29 -0
- package/dist/okf/types/ReadAction.md +14 -0
- package/dist/okf/types/ServiceAccount.md +15 -0
- package/dist/okf/types/ShareAction.md +14 -0
- package/dist/okf/types/Team.md +14 -0
- package/dist/okf/types/User.md +18 -0
- package/dist/okf/types/WriteAction.md +14 -0
- package/dist/package-cli.d.ts +3 -0
- package/dist/package-cli.d.ts.map +1 -0
- package/dist/plugin.d.ts +8 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/rules/cedar-helpers.ts +209 -0
- package/dist/rules/cedc010.ts +80 -0
- package/dist/rules/cedc011.ts +47 -0
- package/dist/rules/cedc012.ts +64 -0
- package/dist/rules/cedc013.ts +68 -0
- package/dist/rules/cedc014.ts +73 -0
- package/dist/rules/cede010.ts +89 -0
- package/dist/rules/cede011.ts +58 -0
- package/dist/rules/ceds010.ts +57 -0
- package/dist/rules/ceds011.ts +42 -0
- package/dist/rules/ceds012.ts +50 -0
- package/dist/rules/policy-shape.ts +148 -0
- package/dist/rules/wasm-helpers.ts +315 -0
- package/dist/serializer.d.ts +138 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/spec/fetch.d.ts +71 -0
- package/dist/spec/fetch.d.ts.map +1 -0
- package/dist/spec/parse.d.ts +113 -0
- package/dist/spec/parse.d.ts.map +1 -0
- package/dist/spec/pin.d.ts +116 -0
- package/dist/spec/pin.d.ts.map +1 -0
- package/dist/spec/pinned-names.json +18 -0
- package/dist/spec/wasm.d.ts +143 -0
- package/dist/spec/wasm.d.ts.map +1 -0
- package/dist/types/index.d.ts +219 -0
- package/dist/validate-cli.d.ts +3 -0
- package/dist/validate-cli.d.ts.map +1 -0
- package/dist/validate.d.ts +25 -0
- package/dist/validate.d.ts.map +1 -0
- package/package.json +75 -0
- package/src/avp/OWNERSHIP.md +125 -0
- package/src/avp/ambient.test.ts +113 -0
- package/src/avp/ambient.ts +124 -0
- package/src/avp/client.ts +310 -0
- package/src/avp/describe-resources.test.ts +316 -0
- package/src/avp/describe-resources.ts +215 -0
- package/src/avp/embed.test.ts +114 -0
- package/src/avp/embed.ts +190 -0
- package/src/avp/live-export.test.ts +232 -0
- package/src/avp/live-export.ts +185 -0
- package/src/avp/ownership.test.ts +101 -0
- package/src/avp/ownership.ts +170 -0
- package/src/avp/statement.ts +50 -0
- package/src/avp/store.ts +152 -0
- package/src/avp/testdata/mock-transport.ts +147 -0
- package/src/codegen/docs-cli.ts +7 -0
- package/src/codegen/docs.ts +873 -0
- package/src/codegen/emit.ts +496 -0
- package/src/codegen/generate-cli.ts +18 -0
- package/src/codegen/generate.test.ts +128 -0
- package/src/codegen/generate.ts +123 -0
- package/src/codegen/naming.ts +101 -0
- package/src/codegen/package.ts +52 -0
- package/src/composites/composites.test.ts +206 -0
- package/src/composites/deny-by-default-set.ts +98 -0
- package/src/composites/index.ts +13 -0
- package/src/composites/owner-can-manage.ts +80 -0
- package/src/config-namespace.test.ts +44 -0
- package/src/config.test.ts +82 -0
- package/src/config.ts +119 -0
- package/src/coverage.test.ts +61 -0
- package/src/coverage.ts +166 -0
- package/src/detect.test.ts +64 -0
- package/src/detect.ts +59 -0
- package/src/generated/index.d.ts +219 -0
- package/src/generated/index.ts +279 -0
- package/src/generated/lexicon-cedar.json +699 -0
- package/src/generated/runtime.ts +2 -0
- package/src/import/adapter.ts +63 -0
- package/src/import/clause-text.ts +178 -0
- package/src/import/generator.test.ts +133 -0
- package/src/import/generator.ts +219 -0
- package/src/import/parser.test.ts +265 -0
- package/src/import/parser.ts +352 -0
- package/src/import/roundtrip.test.ts +127 -0
- package/src/import/testdata/full.cedar +36 -0
- package/src/import/testdata/full.cedar.json +238 -0
- package/src/import/testdata/realistic.cedar +35 -0
- package/src/import/testdata/simple.cedar +6 -0
- package/src/index.ts +94 -0
- package/src/init-templates.test.ts +158 -0
- package/src/init-templates.ts +358 -0
- package/src/lint/audit-catalog.ts +130 -0
- package/src/lint/post-synth/cedar-helpers.ts +209 -0
- package/src/lint/post-synth/cedc010.ts +80 -0
- package/src/lint/post-synth/cedc011.ts +47 -0
- package/src/lint/post-synth/cedc012.ts +64 -0
- package/src/lint/post-synth/cedc013.ts +68 -0
- package/src/lint/post-synth/cedc014.ts +73 -0
- package/src/lint/post-synth/cede010.ts +89 -0
- package/src/lint/post-synth/cede011.ts +58 -0
- package/src/lint/post-synth/ceds010.ts +57 -0
- package/src/lint/post-synth/ceds011.ts +42 -0
- package/src/lint/post-synth/ceds012.ts +50 -0
- package/src/lint/post-synth/index.ts +25 -0
- package/src/lint/post-synth/post-synth.test.ts +474 -0
- package/src/lint/post-synth/wasm-helpers.ts +315 -0
- package/src/lint/rules/index.ts +12 -0
- package/src/lint/rules/policy-shape.test.ts +90 -0
- package/src/lint/rules/policy-shape.ts +148 -0
- package/src/lsp/completions.test.ts +111 -0
- package/src/lsp/completions.ts +55 -0
- package/src/lsp/hover.test.ts +82 -0
- package/src/lsp/hover.ts +75 -0
- package/src/lsp/registry.ts +74 -0
- package/src/mcp/index.ts +103 -0
- package/src/mcp/policy-coverage.test.ts +176 -0
- package/src/mcp/policy-coverage.ts +205 -0
- package/src/package-cli.ts +22 -0
- package/src/plugin.test.ts +115 -0
- package/src/plugin.ts +312 -0
- package/src/serializer.test.ts +502 -0
- package/src/serializer.ts +335 -0
- package/src/skills/chant-cedar-authoring.md +180 -0
- package/src/skills/chant-cedar-avp-embedding.md +125 -0
- package/src/skills/chant-cedar-meta-policy.md +119 -0
- package/src/spec/default-schema.cedarschema +108 -0
- package/src/spec/fetch.ts +107 -0
- package/src/spec/parse.test.ts +123 -0
- package/src/spec/parse.ts +253 -0
- package/src/spec/pin.test.ts +88 -0
- package/src/spec/pin.ts +243 -0
- package/src/spec/pinned-names.json +18 -0
- package/src/spec/wasm.ts +283 -0
- package/src/validate-cli.ts +8 -0
- package/src/validate.ts +85 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { PostSynthContext } from "@intentius/chant/lint/post-synth";
|
|
2
|
+
import type * as CedarWasm from "@cedar-policy/cedar-wasm/nodejs";
|
|
3
|
+
import { type CedarPolicySet } from "./cedar-helpers.js";
|
|
4
|
+
type Wasm = typeof CedarWasm;
|
|
5
|
+
/**
|
|
6
|
+
* The wasm module, loaded on first use.
|
|
7
|
+
*
|
|
8
|
+
* Lazy and `require`-based on purpose. The post-synth barrel is imported
|
|
9
|
+
* statically by `plugin.ts`, and every `chant lint`/`chant audit` run loads
|
|
10
|
+
* every active lexicon's plugin — a top-level import would pull 4 MB of wasm
|
|
11
|
+
* into any build that merely has cedar installed. `check()` is synchronous, so
|
|
12
|
+
* `await import()` is not available; `createRequire` is. The `/nodejs` flavor
|
|
13
|
+
* is CommonJS with a synchronous `readFileSync` init, so there is nothing to
|
|
14
|
+
* await anyway.
|
|
15
|
+
*/
|
|
16
|
+
export declare function loadWasm(): Wasm | undefined;
|
|
17
|
+
/** Why the wasm could not be loaded, if it could not be. */
|
|
18
|
+
export declare function wasmLoadError(): string | undefined;
|
|
19
|
+
/** Reset the module cache. Test-only — lets a test exercise the load-failure path. */
|
|
20
|
+
export declare function resetWasmCache(): void;
|
|
21
|
+
export type WasmResult<T> = {
|
|
22
|
+
ok: true;
|
|
23
|
+
value: T;
|
|
24
|
+
} | {
|
|
25
|
+
ok: false;
|
|
26
|
+
message: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Run a wasm call, turning a thrown serde error into a result rather than an
|
|
30
|
+
* exception (trap 3 above). The thrown message is deliberately not passed
|
|
31
|
+
* through verbatim: its positions point into the internal call struct.
|
|
32
|
+
*/
|
|
33
|
+
export declare function call<T>(what: string, fn: () => T): WasmResult<T>;
|
|
34
|
+
/** The first line of a Cedar `DetailedError`, with its `help` when it has one. */
|
|
35
|
+
export declare function describeError(error: {
|
|
36
|
+
message: string;
|
|
37
|
+
help?: string | null;
|
|
38
|
+
}): string;
|
|
39
|
+
/**
|
|
40
|
+
* chant's serializer carries a `when`/`unless` body as Cedar expression
|
|
41
|
+
* *source* under a `__expr` key, because the authored model holds expression
|
|
42
|
+
* strings until schema-driven codegen (#1650) makes them typed trees. `__expr`
|
|
43
|
+
* is not part of Cedar's JSON policy grammar — the deserializer rejects it
|
|
44
|
+
* ("unknown variant `__expr`") — so anything handed to the wasm has to have
|
|
45
|
+
* those bodies parsed into real expression JSON first.
|
|
46
|
+
*
|
|
47
|
+
* There is no expression-level entry point in the package, so the expression
|
|
48
|
+
* is parsed inside a throwaway policy and the resulting condition body lifted
|
|
49
|
+
* back out. A source expression that does not parse is the finding CEDC011
|
|
50
|
+
* reports.
|
|
51
|
+
*/
|
|
52
|
+
export declare const EXPR_KEY = "__expr";
|
|
53
|
+
export interface ExpressionFailure {
|
|
54
|
+
/** The policy key the clause belongs to. */
|
|
55
|
+
key: string;
|
|
56
|
+
/** `when` or `unless`, as the document spelled it. */
|
|
57
|
+
kind: string;
|
|
58
|
+
/** The expression source that failed. */
|
|
59
|
+
expression: string;
|
|
60
|
+
message: string;
|
|
61
|
+
}
|
|
62
|
+
export interface NormalizedPolicySet {
|
|
63
|
+
/** A policy set the wasm will accept, keyed by chant's own policy ids. */
|
|
64
|
+
policySet: CedarWasm.PolicySet;
|
|
65
|
+
/** Condition bodies whose expression source did not parse. */
|
|
66
|
+
expressionFailures: ExpressionFailure[];
|
|
67
|
+
}
|
|
68
|
+
/** Replace every `__expr` body in a policy set with parsed expression JSON. */
|
|
69
|
+
export declare function normalizePolicySet(wasm: Wasm, set: CedarPolicySet): NormalizedPolicySet;
|
|
70
|
+
/** A Cedar schema found beside the policies in the build output. */
|
|
71
|
+
export interface DiscoveredSchema {
|
|
72
|
+
/** Human-readable `.cedarschema` source, or a parsed JSON schema object. */
|
|
73
|
+
schema: CedarWasm.Schema;
|
|
74
|
+
/** The filename it came from. */
|
|
75
|
+
source: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The project's Cedar schema, if the build emitted one beside the policies.
|
|
79
|
+
*
|
|
80
|
+
* Two forms, both of which the wasm accepts — but only as the right JS type: a
|
|
81
|
+
* `string` is *always* read as human-readable `.cedarschema`, never as JSON, so
|
|
82
|
+
* a `.cedarschema.json` file has to be `JSON.parse`d into a live object first
|
|
83
|
+
* or the parser reports "unexpected token `{`" against perfectly valid JSON.
|
|
84
|
+
*
|
|
85
|
+
* Reads `ctx.outputs` only. Nothing emits a schema today — schema-driven
|
|
86
|
+
* codegen is #1650 — which is exactly why CEDE010 says so out loud instead of
|
|
87
|
+
* passing silently.
|
|
88
|
+
*/
|
|
89
|
+
export declare function findSchema(ctx: PostSynthContext): DiscoveredSchema | undefined;
|
|
90
|
+
/** One validator finding, already flattened and safe to sort. */
|
|
91
|
+
export interface ValidationFinding {
|
|
92
|
+
policyId: string;
|
|
93
|
+
message: string;
|
|
94
|
+
}
|
|
95
|
+
export interface ValidationOutcome {
|
|
96
|
+
/** Sorted by `policyId` then `message` — the wasm's own order is not stable. */
|
|
97
|
+
errors: ValidationFinding[];
|
|
98
|
+
/** Same sort. */
|
|
99
|
+
warnings: ValidationFinding[];
|
|
100
|
+
/** Set when the call itself failed (a parse error, a malformed call struct). */
|
|
101
|
+
failure?: string;
|
|
102
|
+
}
|
|
103
|
+
/** Validate a normalized policy set against a schema. Never throws. */
|
|
104
|
+
export declare function validatePolicySet(wasm: Wasm, policySet: CedarWasm.PolicySet, schema: CedarWasm.Schema): ValidationOutcome;
|
|
105
|
+
/** Parse-only gate, for when there is no schema to validate against. */
|
|
106
|
+
export declare function parsePolicySet(wasm: Wasm, policySet: CedarWasm.PolicySet): WasmResult<string[]>;
|
|
107
|
+
export {};
|
|
108
|
+
//# sourceMappingURL=wasm-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm-helpers.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/wasm-helpers.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,KAAK,SAAS,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAIzB,KAAK,IAAI,GAAG,OAAO,SAAS,CAAC;AAK7B;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,IAAI,IAAI,GAAG,SAAS,CAS3C;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAGlD;AAED,sFAAsF;AACtF,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAID,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAUhE;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,CAEtF;AAID;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,QAAQ,WAAW,CAAC;AAEjC,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;IAC/B,8DAA8D;IAC9D,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;CACzC;AAgBD,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,GAAG,mBAAmB,CAkBvF;AAoCD,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;IACzB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,CAkB9E;AAID,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,iBAAiB;IACjB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD,uEAAuE;AACvE,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,CAAC,SAAS,EAC9B,MAAM,EAAE,SAAS,CAAC,MAAM,GACvB,iBAAiB,CAiBnB;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAO/F"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LintRule } from "@intentius/chant/lint/rule";
|
|
2
|
+
export { cedarPolicyShapeRule, CEDAR_EFFECTS } from "./policy-shape.js";
|
|
3
|
+
/**
|
|
4
|
+
* All lint rules provided by this lexicon (imported by plugin.ts's lintRules()).
|
|
5
|
+
*
|
|
6
|
+
* Pre-synth rules are wired by hand — unlike post-synth checks, they are not
|
|
7
|
+
* auto-discovered. Add the import above and the entry below.
|
|
8
|
+
*/
|
|
9
|
+
export declare const rules: LintRule[];
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAErE;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,QAAQ,EAA2B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CEDC001: a Cedar policy declaration must have a usable effect and no empty guard
|
|
3
|
+
*
|
|
4
|
+
* Two authoring mistakes that the serializer cannot report and the emitted
|
|
5
|
+
* artifact hides:
|
|
6
|
+
*
|
|
7
|
+
* - **An effect that is not `permit` or `forbid`.** Cedar has exactly two, and
|
|
8
|
+
* the serializer coerces anything that is not the literal string `"forbid"`
|
|
9
|
+
* into `permit`. So `effect: "deny"` — the word every other policy language
|
|
10
|
+
* in the world uses, and the one a reader will reach for — silently emits a
|
|
11
|
+
* *grant*. There is no downstream stage that can catch this: by the time the
|
|
12
|
+
* policy set exists, the mistake looks like a deliberate permit.
|
|
13
|
+
* - **An empty `when`/`unless` entry.** `when: ["", "context.mfa"]` emits
|
|
14
|
+
* `when { }`, which is not a Cedar expression; the policy set then fails to
|
|
15
|
+
* parse and the error arrives as a byte offset into a generated file. The
|
|
16
|
+
* typo is here, in the source, and so is the line number worth printing.
|
|
17
|
+
*
|
|
18
|
+
* Source-level because both are visible only before serialization, and both
|
|
19
|
+
* are about a literal the author typed. A guard built from a variable or a
|
|
20
|
+
* template expression is out of reach of an AST rule and is left alone —
|
|
21
|
+
* CEDC011 covers the emitted form.
|
|
22
|
+
*
|
|
23
|
+
* Scoped by import: only calls to bindings imported from this lexicon are
|
|
24
|
+
* considered, so an unrelated `{ effect: "deny" }` in a file that has nothing
|
|
25
|
+
* to do with Cedar is never flagged.
|
|
26
|
+
*/
|
|
27
|
+
import type { LintRule } from "@intentius/chant/lint/rule";
|
|
28
|
+
/** The two effects Cedar has. */
|
|
29
|
+
export declare const CEDAR_EFFECTS: readonly ["permit", "forbid"];
|
|
30
|
+
export declare const cedarPolicyShapeRule: LintRule;
|
|
31
|
+
//# sourceMappingURL=policy-shape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-shape.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/policy-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,4BAA4B,CAAC;AAMxF,iCAAiC;AACjC,eAAO,MAAM,aAAa,+BAAgC,CAAC;AA+C3D,eAAO,MAAM,oBAAoB,EAAE,QAmElC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CompletionContext, CompletionItem } from "@intentius/chant/lsp/types";
|
|
2
|
+
/**
|
|
3
|
+
* Completions over the schema-derived registry.
|
|
4
|
+
*
|
|
5
|
+
* Two shapes come out of core's generic provider: class names after `new `,
|
|
6
|
+
* and property names inside a constructor's object literal. Both are useful
|
|
7
|
+
* here — `new Policy({` completes `effect`/`principal`/`action`/…, and
|
|
8
|
+
* `new Doc` completes `Document`.
|
|
9
|
+
*
|
|
10
|
+
* The third shape is Cedar's own: a scope names an *action constant*, not a
|
|
11
|
+
* class, and those are plain `const` exports rather than constructors, so no
|
|
12
|
+
* `new ` ever precedes them. {@link actionCompletions} covers that position.
|
|
13
|
+
*/
|
|
14
|
+
export declare function completions(ctx: CompletionContext): CompletionItem[];
|
|
15
|
+
/**
|
|
16
|
+
* Action constants in a scope position.
|
|
17
|
+
*
|
|
18
|
+
* `action: { eq: <cursor> }` and `action: { in: [<cursor>` are where an action
|
|
19
|
+
* is named, and the generated constants (`ReadAction`, `WriteAction`, …) are
|
|
20
|
+
* the only correct values. Matching on the surrounding text rather than on a
|
|
21
|
+
* parsed AST keeps this cheap and is what the other lexicons' providers do.
|
|
22
|
+
*/
|
|
23
|
+
export declare function actionCompletions(ctx: CompletionContext): CompletionItem[];
|
|
24
|
+
//# sourceMappingURL=completions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/lsp/completions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIpF;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc,EAAE,CAIpE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc,EAAE,CAwB1E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { HoverContext, HoverInfo } from "@intentius/chant/lsp/types";
|
|
2
|
+
/**
|
|
3
|
+
* Hover over a generated declaration.
|
|
4
|
+
*
|
|
5
|
+
* Core's default formatter reports CloudFormation-shaped facts (primary
|
|
6
|
+
* identifier, create-only, write-only) a Cedar declaration does not have. The
|
|
7
|
+
* facts that matter here are the Cedar ones: what a `Policy` prop means, which
|
|
8
|
+
* groups an entity type is `in`, and what an action applies to.
|
|
9
|
+
*/
|
|
10
|
+
export declare function hover(ctx: HoverContext): HoverInfo | undefined;
|
|
11
|
+
//# sourceMappingURL=hover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../../src/lsp/hover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAI1E;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAE9D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The generated registry, adapted to what core's `LexiconIndex` reads.
|
|
3
|
+
*
|
|
4
|
+
* `lexicon-cedar.json` describes every declaration the project's schema
|
|
5
|
+
* produced (#1650): the `Policy` authoring class, one entry per entity type,
|
|
6
|
+
* one per action, and the attribute/context record types beside them. Its
|
|
7
|
+
* property table is keyed `properties`, while `LexiconIndex.getPropertyNames`
|
|
8
|
+
* looks at `propertyConstraints` — the CloudFormation-shaped name the class was
|
|
9
|
+
* written against. Renaming the generated key to match would put a
|
|
10
|
+
* CloudFormation word in a Cedar artifact; translating here does not, and it is
|
|
11
|
+
* the only reason this module exists.
|
|
12
|
+
*
|
|
13
|
+
* The require is lazy and cached. `generate()` writes the registry, so a
|
|
14
|
+
* checkout that has not run it yet must still be able to import this file —
|
|
15
|
+
* the LSP tests skip on exactly that condition.
|
|
16
|
+
*/
|
|
17
|
+
import { LexiconIndex } from "@intentius/chant/lsp/lexicon-providers";
|
|
18
|
+
/** One `lexicon-cedar.json` entry, as {@link generateRegistry} writes it. */
|
|
19
|
+
export interface CedarRegistryEntry {
|
|
20
|
+
resourceType: string;
|
|
21
|
+
kind: "resource" | "property";
|
|
22
|
+
lexicon: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
/** Cedar namespace the declaration came from, e.g. `App`. */
|
|
25
|
+
namespace?: string;
|
|
26
|
+
/** Entity types this one is `in`, for an entity declaration. */
|
|
27
|
+
memberOfTypes?: string[];
|
|
28
|
+
/** `appliesTo.principal`, for an action declaration. */
|
|
29
|
+
principalTypes?: string[];
|
|
30
|
+
/** `appliesTo.resource`, for an action declaration. */
|
|
31
|
+
resourceTypes?: string[];
|
|
32
|
+
enumValues?: string[];
|
|
33
|
+
properties?: Record<string, {
|
|
34
|
+
type: string;
|
|
35
|
+
required: boolean;
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
export type CedarRegistry = Record<string, CedarRegistryEntry>;
|
|
39
|
+
/** The raw registry, for the hover formatter's Cedar-specific fields. */
|
|
40
|
+
export declare function cedarRegistry(): CedarRegistry;
|
|
41
|
+
/** The same registry as a `LexiconIndex`, with the property table translated. */
|
|
42
|
+
export declare function cedarIndex(): LexiconIndex;
|
|
43
|
+
/** Reset the caches. Tests that swap the registry on disk need this; nothing else does. */
|
|
44
|
+
export declare function resetCedarIndexCache(): void;
|
|
45
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/lsp/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,YAAY,EAAqB,MAAM,wCAAwC,CAAC;AAKzF,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAClE;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAK/D,yEAAyE;AACzE,wBAAgB,aAAa,IAAI,aAAa,CAI7C;AAED,iFAAiF;AACjF,wBAAgB,UAAU,IAAI,YAAY,CAazC;AAED,2FAA2F;AAC3F,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The cedar lexicon's MCP contributions.
|
|
3
|
+
*
|
|
4
|
+
* Two of the three are the conventional pair every lexicon ships, built from
|
|
5
|
+
* core's shared helpers: `cedar:diff` and `chant://cedar/resource-catalog`.
|
|
6
|
+
* The third is the one only this lexicon can answer — see
|
|
7
|
+
* ./policy-coverage.ts.
|
|
8
|
+
*
|
|
9
|
+
* Names are written as bare verbs and single-segment URIs. Core namespaces both
|
|
10
|
+
* (`cedar:<verb>`, `chant://cedar/<path>`), and applying the prefix is
|
|
11
|
+
* idempotent, so the helpers' pre-namespaced output and the bare `coverage`
|
|
12
|
+
* below both register as exactly one well-formed identifier (chant #1341).
|
|
13
|
+
*/
|
|
14
|
+
import type { McpToolContribution, McpResourceContribution } from "@intentius/chant/mcp/types";
|
|
15
|
+
/**
|
|
16
|
+
* `cedar:coverage` — which schema declarations the built policy set reaches.
|
|
17
|
+
*
|
|
18
|
+
* Builds the project the same way `chant build` does rather than reading a
|
|
19
|
+
* committed `.cedar` file, so the answer is about the policies in source, not
|
|
20
|
+
* about whatever was last written to disk.
|
|
21
|
+
*/
|
|
22
|
+
export declare const cedarCoverageTool: McpToolContribution;
|
|
23
|
+
/** Every MCP tool this lexicon contributes. */
|
|
24
|
+
export declare function cedarMcpTools(): McpToolContribution[];
|
|
25
|
+
/**
|
|
26
|
+
* Every MCP resource this lexicon contributes.
|
|
27
|
+
*
|
|
28
|
+
* `createCatalogResource` locates the registry relative to the module URL it is
|
|
29
|
+
* given, resolving `<dir>/generated/lexicon-cedar.json`. That has to be
|
|
30
|
+
* `src/`, not `src/mcp/`, so the caller in plugin.ts passes its own
|
|
31
|
+
* `import.meta.url` rather than this file deriving one by walking up.
|
|
32
|
+
*/
|
|
33
|
+
export declare function cedarMcpResources(pluginUrl: string): McpResourceContribution[];
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAI/F;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,mBA4C/B,CAAC;AAEF,+CAA+C;AAC/C,wBAAgB,aAAa,IAAI,mBAAmB,EAAE,CASrD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAU9E"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Which policies cover this resource?" — answered from a build (epic #1645).
|
|
3
|
+
*
|
|
4
|
+
* `src/coverage.ts` next door asks a different question: is every schema
|
|
5
|
+
* declaration reachable from the *generated artifacts*. This one asks whether
|
|
6
|
+
* every schema declaration is reachable from the *policy set*, which is the
|
|
7
|
+
* authorization question. An entity type no policy can ever apply to is a
|
|
8
|
+
* resource nothing grants and nothing denies — under Cedar's default-deny it is
|
|
9
|
+
* inert, and that is either the intent or a hole.
|
|
10
|
+
*
|
|
11
|
+
* The answer comes from `getValidRequestEnvsPolicy`, Cedar's own resolver: it
|
|
12
|
+
* takes one policy and the schema and returns every (principal, action,
|
|
13
|
+
* resource) triple the policy could apply to, having already expanded `is`,
|
|
14
|
+
* `in`, action groups, and `appliesTo`. Reimplementing that against the parsed
|
|
15
|
+
* scope would be a second, worse Cedar; this is why the wasm package is a
|
|
16
|
+
* runtime dependency rather than a dev one.
|
|
17
|
+
*/
|
|
18
|
+
import { type ResolveSchemaOptions } from "../spec/fetch.js";
|
|
19
|
+
export interface CedarPolicyCoverageItem {
|
|
20
|
+
/** `App::Document` or `App::Action::"read"`. */
|
|
21
|
+
name: string;
|
|
22
|
+
kind: "entity" | "action";
|
|
23
|
+
/** How many policies in the set can apply to it. */
|
|
24
|
+
policies: number;
|
|
25
|
+
/** Ids of the policies that can, in declaration order. */
|
|
26
|
+
policyIds: string[];
|
|
27
|
+
/** True when at least one of those policies is a `permit`. */
|
|
28
|
+
permitted: boolean;
|
|
29
|
+
/** True when at least one of those policies is a `forbid`. */
|
|
30
|
+
forbidden: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface CedarPolicyCoverageReport {
|
|
33
|
+
/** Where the schema came from. */
|
|
34
|
+
schemaPath: string;
|
|
35
|
+
isDefaultSchema: boolean;
|
|
36
|
+
/** Policies the set parsed into. */
|
|
37
|
+
policyCount: number;
|
|
38
|
+
entityTypes: number;
|
|
39
|
+
entityTypesCovered: number;
|
|
40
|
+
actions: number;
|
|
41
|
+
actionsCovered: number;
|
|
42
|
+
/** Declarations no policy in the set can apply to. */
|
|
43
|
+
uncovered: string[];
|
|
44
|
+
/** Declarations reachable only from a `forbid` — nothing ever grants them. */
|
|
45
|
+
forbidOnly: string[];
|
|
46
|
+
items: CedarPolicyCoverageItem[];
|
|
47
|
+
/** Policies the resolver could not place, with its reason. */
|
|
48
|
+
unresolved: Array<{
|
|
49
|
+
policyId: string;
|
|
50
|
+
error: string;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Ids of policies whose valid request envelope is empty — no request can ever
|
|
54
|
+
* match them.
|
|
55
|
+
*
|
|
56
|
+
* A scope naming an entity type the schema does not declare lands here rather
|
|
57
|
+
* than in {@link unresolved}: `getValidRequestEnvsPolicy` answers "success,
|
|
58
|
+
* nothing" rather than failing, and a policy that can never fire is a real
|
|
59
|
+
* finding either way. It is usually a typo'd entity type.
|
|
60
|
+
*/
|
|
61
|
+
inert: string[];
|
|
62
|
+
/**
|
|
63
|
+
* Why the policy set could not be split into policies, when it could not.
|
|
64
|
+
*
|
|
65
|
+
* Without this a set that fails to parse reports zero policies and every
|
|
66
|
+
* declaration uncovered — the same numbers as a project with no policies at
|
|
67
|
+
* all, and the opposite diagnosis.
|
|
68
|
+
*/
|
|
69
|
+
parseErrors: string[];
|
|
70
|
+
}
|
|
71
|
+
export interface CedarPolicyCoverageOptions extends ResolveSchemaOptions {
|
|
72
|
+
/** The emitted `.cedar` policy set text. */
|
|
73
|
+
policySetText: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Report which schema declarations the policy set can reach.
|
|
77
|
+
*/
|
|
78
|
+
export declare function computePolicyCoverage(options: CedarPolicyCoverageOptions): CedarPolicyCoverageReport;
|
|
79
|
+
/** Human-readable summary, for the CLI-shaped callers. */
|
|
80
|
+
export declare function formatPolicyCoverage(report: CedarPolicyCoverageReport): string;
|
|
81
|
+
//# sourceMappingURL=policy-coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-coverage.d.ts","sourceRoot":"","sources":["../../src/mcp/policy-coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAG5E,MAAM,WAAW,uBAAuB;IACtC,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,8DAA8D;IAC9D,SAAS,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,uBAAuB,EAAE,CAAC;IACjC,8DAA8D;IAC9D,UAAU,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;CACvB;AA0BD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,0BAA0B,GAAG,yBAAyB,CAmEpG;AAED,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM,CAyB9E"}
|