@greyworld/code-check-core 1.0.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/dist/facade/code-checker.d.ts +14 -0
- package/dist/facade/code-checker.d.ts.map +1 -0
- package/dist/facade/code-checker.js +63 -0
- package/dist/facade/code-checker.js.map +1 -0
- package/dist/facade/index.d.ts +3 -0
- package/dist/facade/index.d.ts.map +1 -0
- package/dist/facade/index.js +6 -0
- package/dist/facade/index.js.map +1 -0
- package/dist/facade/types.d.ts +24 -0
- package/dist/facade/types.d.ts.map +1 -0
- package/dist/facade/types.js +3 -0
- package/dist/facade/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/ast-parser/go/index.d.ts +3 -0
- package/dist/tools/ast-parser/go/index.d.ts.map +1 -0
- package/dist/tools/ast-parser/go/index.js +6 -0
- package/dist/tools/ast-parser/go/index.js.map +1 -0
- package/dist/tools/ast-parser/go/parser.d.ts +56 -0
- package/dist/tools/ast-parser/go/parser.d.ts.map +1 -0
- package/dist/tools/ast-parser/go/parser.js +147 -0
- package/dist/tools/ast-parser/go/parser.js.map +1 -0
- package/dist/tools/ast-parser/go/schema-extractor.d.ts +103 -0
- package/dist/tools/ast-parser/go/schema-extractor.d.ts.map +1 -0
- package/dist/tools/ast-parser/go/schema-extractor.js +487 -0
- package/dist/tools/ast-parser/go/schema-extractor.js.map +1 -0
- package/dist/tools/ast-parser/go/semantic-normalizer.d.ts +51 -0
- package/dist/tools/ast-parser/go/semantic-normalizer.d.ts.map +1 -0
- package/dist/tools/ast-parser/go/semantic-normalizer.js +263 -0
- package/dist/tools/ast-parser/go/semantic-normalizer.js.map +1 -0
- package/dist/tools/ast-parser/go/types.d.ts +131 -0
- package/dist/tools/ast-parser/go/types.d.ts.map +1 -0
- package/dist/tools/ast-parser/go/types.js +3 -0
- package/dist/tools/ast-parser/go/types.js.map +1 -0
- package/dist/tools/ast-parser/markdown/index.d.ts +28 -0
- package/dist/tools/ast-parser/markdown/index.d.ts.map +1 -0
- package/dist/tools/ast-parser/markdown/index.js +31 -0
- package/dist/tools/ast-parser/markdown/index.js.map +1 -0
- package/dist/tools/ast-parser/markdown/parser.d.ts +271 -0
- package/dist/tools/ast-parser/markdown/parser.d.ts.map +1 -0
- package/dist/tools/ast-parser/markdown/parser.js +613 -0
- package/dist/tools/ast-parser/markdown/parser.js.map +1 -0
- package/dist/tools/ast-parser/markdown/types.d.ts +131 -0
- package/dist/tools/ast-parser/markdown/types.d.ts.map +1 -0
- package/dist/tools/ast-parser/markdown/types.js +3 -0
- package/dist/tools/ast-parser/markdown/types.js.map +1 -0
- package/dist/tools/env/index.d.ts +2 -0
- package/dist/tools/env/index.d.ts.map +1 -0
- package/dist/tools/env/index.js +6 -0
- package/dist/tools/env/index.js.map +1 -0
- package/dist/tools/env/load-env.d.ts +9 -0
- package/dist/tools/env/load-env.d.ts.map +1 -0
- package/dist/tools/env/load-env.js +39 -0
- package/dist/tools/env/load-env.js.map +1 -0
- package/dist/tools/line-pattern/index.d.ts +15 -0
- package/dist/tools/line-pattern/index.d.ts.map +1 -0
- package/dist/tools/line-pattern/index.js +25 -0
- package/dist/tools/line-pattern/index.js.map +1 -0
- package/dist/tools/line-pattern/line-pattern.d.ts +53 -0
- package/dist/tools/line-pattern/line-pattern.d.ts.map +1 -0
- package/dist/tools/line-pattern/line-pattern.js +88 -0
- package/dist/tools/line-pattern/line-pattern.js.map +1 -0
- package/dist/tools/line-pattern/segment.d.ts +24 -0
- package/dist/tools/line-pattern/segment.d.ts.map +1 -0
- package/dist/tools/line-pattern/segment.js +15 -0
- package/dist/tools/line-pattern/segment.js.map +1 -0
- package/dist/tools/line-pattern/segments.d.ts +43 -0
- package/dist/tools/line-pattern/segments.d.ts.map +1 -0
- package/dist/tools/line-pattern/segments.js +91 -0
- package/dist/tools/line-pattern/segments.js.map +1 -0
- package/dist/tools/llm/description-intent/format-spec.d.ts +3 -0
- package/dist/tools/llm/description-intent/format-spec.d.ts.map +1 -0
- package/dist/tools/llm/description-intent/format-spec.js +167 -0
- package/dist/tools/llm/description-intent/format-spec.js.map +1 -0
- package/dist/tools/llm/description-intent/index.d.ts +7 -0
- package/dist/tools/llm/description-intent/index.d.ts.map +1 -0
- package/dist/tools/llm/description-intent/index.js +15 -0
- package/dist/tools/llm/description-intent/index.js.map +1 -0
- package/dist/tools/llm/description-intent/intent-detector.d.ts +8 -0
- package/dist/tools/llm/description-intent/intent-detector.d.ts.map +1 -0
- package/dist/tools/llm/description-intent/intent-detector.js +103 -0
- package/dist/tools/llm/description-intent/intent-detector.js.map +1 -0
- package/dist/tools/llm/description-intent/normalizer.d.ts +12 -0
- package/dist/tools/llm/description-intent/normalizer.d.ts.map +1 -0
- package/dist/tools/llm/description-intent/normalizer.js +73 -0
- package/dist/tools/llm/description-intent/normalizer.js.map +1 -0
- package/dist/tools/llm/description-intent/slot-extractor.d.ts +3 -0
- package/dist/tools/llm/description-intent/slot-extractor.d.ts.map +1 -0
- package/dist/tools/llm/description-intent/slot-extractor.js +66 -0
- package/dist/tools/llm/description-intent/slot-extractor.js.map +1 -0
- package/dist/tools/llm/description-intent/types.d.ts +28 -0
- package/dist/tools/llm/description-intent/types.d.ts.map +1 -0
- package/dist/tools/llm/description-intent/types.js +19 -0
- package/dist/tools/llm/description-intent/types.js.map +1 -0
- package/dist/tools/llm/index.d.ts +16 -0
- package/dist/tools/llm/index.d.ts.map +1 -0
- package/dist/tools/llm/index.js +26 -0
- package/dist/tools/llm/index.js.map +1 -0
- package/dist/tools/llm/model.d.ts +3 -0
- package/dist/tools/llm/model.d.ts.map +1 -0
- package/dist/tools/llm/model.js +18 -0
- package/dist/tools/llm/model.js.map +1 -0
- package/dist/tools/llm/structured-caller.d.ts +86 -0
- package/dist/tools/llm/structured-caller.d.ts.map +1 -0
- package/dist/tools/llm/structured-caller.js +181 -0
- package/dist/tools/llm/structured-caller.js.map +1 -0
- package/dist/tools/node-pattern/index.d.ts +17 -0
- package/dist/tools/node-pattern/index.d.ts.map +1 -0
- package/dist/tools/node-pattern/index.js +36 -0
- package/dist/tools/node-pattern/index.js.map +1 -0
- package/dist/tools/node-pattern/matchers.d.ts +61 -0
- package/dist/tools/node-pattern/matchers.d.ts.map +1 -0
- package/dist/tools/node-pattern/matchers.js +154 -0
- package/dist/tools/node-pattern/matchers.js.map +1 -0
- package/dist/tools/node-pattern/node-matcher.d.ts +69 -0
- package/dist/tools/node-pattern/node-matcher.d.ts.map +1 -0
- package/dist/tools/node-pattern/node-matcher.js +122 -0
- package/dist/tools/node-pattern/node-matcher.js.map +1 -0
- package/dist/tools/node-pattern/node-pattern.d.ts +65 -0
- package/dist/tools/node-pattern/node-pattern.d.ts.map +1 -0
- package/dist/tools/node-pattern/node-pattern.js +129 -0
- package/dist/tools/node-pattern/node-pattern.js.map +1 -0
- package/dist/tools/section-check/index.d.ts +4 -0
- package/dist/tools/section-check/index.d.ts.map +1 -0
- package/dist/tools/section-check/index.js +10 -0
- package/dist/tools/section-check/index.js.map +1 -0
- package/dist/tools/section-check/section-check.d.ts +46 -0
- package/dist/tools/section-check/section-check.d.ts.map +1 -0
- package/dist/tools/section-check/section-check.js +264 -0
- package/dist/tools/section-check/section-check.js.map +1 -0
- package/dist/tools/section-check/types.d.ts +35 -0
- package/dist/tools/section-check/types.d.ts.map +1 -0
- package/dist/tools/section-check/types.js +23 -0
- package/dist/tools/section-check/types.js.map +1 -0
- package/dist/tools/text-grep/index.d.ts +10 -0
- package/dist/tools/text-grep/index.d.ts.map +1 -0
- package/dist/tools/text-grep/index.js +13 -0
- package/dist/tools/text-grep/index.js.map +1 -0
- package/dist/tools/text-grep/regex-grep.d.ts +92 -0
- package/dist/tools/text-grep/regex-grep.d.ts.map +1 -0
- package/dist/tools/text-grep/regex-grep.js +141 -0
- package/dist/tools/text-grep/regex-grep.js.map +1 -0
- package/dist/workflow/context/context.d.ts +13 -0
- package/dist/workflow/context/context.d.ts.map +1 -0
- package/dist/workflow/context/context.js +29 -0
- package/dist/workflow/context/context.js.map +1 -0
- package/dist/workflow/implement/resource-check/context-keys.d.ts +30 -0
- package/dist/workflow/implement/resource-check/context-keys.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/context-keys.js +33 -0
- package/dist/workflow/implement/resource-check/context-keys.js.map +1 -0
- package/dist/workflow/implement/resource-check/resource-check-workflow.d.ts +20 -0
- package/dist/workflow/implement/resource-check/resource-check-workflow.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/resource-check-workflow.js +325 -0
- package/dist/workflow/implement/resource-check/resource-check-workflow.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/index.d.ts +5 -0
- package/dist/workflow/implement/resource-check/rules/index.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/index.js +21 -0
- package/dist/workflow/implement/resource-check/rules/index.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/arguments/argument-section-format-rule.d.ts +8 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/arguments/argument-section-format-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/arguments/argument-section-format-rule.js +51 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/arguments/argument-section-format-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/attributes/attribute-section-format-rule.d.ts +8 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/attributes/attribute-section-format-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/attributes/attribute-section-format-rule.js +60 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/attributes/attribute-section-format-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/blank-line-between-blocks-rule.d.ts +9 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/blank-line-between-blocks-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/blank-line-between-blocks-rule.js +80 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/blank-line-between-blocks-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/example/example-section-exists-rule.d.ts +8 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/example/example-section-exists-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/example/example-section-exists-rule.js +42 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/example/example-section-exists-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/example-section-exists-rule.d.ts +8 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/example-section-exists-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/example-section-exists-rule.js +34 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/example-section-exists-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/frontmatter/frontmatter-check-rule.d.ts +8 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/frontmatter/frontmatter-check-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/frontmatter/frontmatter-check-rule.js +33 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/frontmatter/frontmatter-check-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/frontmatter-check-rule.d.ts +8 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/frontmatter-check-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/frontmatter-check-rule.js +33 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/frontmatter-check-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/h1-exists-rule.d.ts +8 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/h1-exists-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/h1-exists-rule.js +34 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/h1-exists-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/index.d.ts +11 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/index.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/index.js +38 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/index.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/line-length-rule.d.ts +15 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/line-length-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/line-length-rule.js +77 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/line-length-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/number-format-rule.d.ts +23 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/number-format-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/number-format-rule.js +128 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/number-format-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/shared/section-check-result.d.ts +9 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/shared/section-check-result.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/shared/section-check-result.js +19 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/shared/section-check-result.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/title/h1-exists-rule.d.ts +8 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/title/h1-exists-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/title/h1-exists-rule.js +44 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/title/h1-exists-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/blank-line-between-blocks-rule.d.ts +9 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/blank-line-between-blocks-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/blank-line-between-blocks-rule.js +80 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/blank-line-between-blocks-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/line-length-rule.d.ts +15 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/line-length-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/line-length-rule.js +77 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/line-length-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/number-format-rule.d.ts +23 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/number-format-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/number-format-rule.js +128 -0
- package/dist/workflow/implement/resource-check/rules/markdown-format/total/number-format-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/argument-section-semantic-rule.d.ts +11 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/argument-section-semantic-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/argument-section-semantic-rule.js +145 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/argument-section-semantic-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/arguments/argument-section-semantic-rule.d.ts +11 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/arguments/argument-section-semantic-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/arguments/argument-section-semantic-rule.js +145 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/arguments/argument-section-semantic-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/attribute-section-semantic-rule.d.ts +9 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/attribute-section-semantic-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/attribute-section-semantic-rule.js +83 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/attribute-section-semantic-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/attributes/attribute-section-semantic-rule.d.ts +9 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/attributes/attribute-section-semantic-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/attributes/attribute-section-semantic-rule.js +83 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/attributes/attribute-section-semantic-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/index.d.ts +7 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/index.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/index.js +15 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/index.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/section-existence-rule.d.ts +9 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/section-existence-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/section-existence-rule.js +96 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/section-existence-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/total/section-existence-rule.d.ts +9 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/total/section-existence-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/total/section-existence-rule.js +109 -0
- package/dist/workflow/implement/resource-check/rules/markdown-semantic/total/section-existence-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/rules/stage-placeholder-rule.d.ts +19 -0
- package/dist/workflow/implement/resource-check/rules/stage-placeholder-rule.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/rules/stage-placeholder-rule.js +31 -0
- package/dist/workflow/implement/resource-check/rules/stage-placeholder-rule.js.map +1 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/builder.d.ts +15 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/builder.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/builder.js +554 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/builder.js.map +1 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/index.d.ts +5 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/index.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/index.js +16 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/index.js.map +1 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/types.d.ts +94 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/types.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/types.js +42 -0
- package/dist/workflow/implement/resource-check/tools/doc-semantic/types.js.map +1 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/builder.d.ts +4 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/builder.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/builder.js +103 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/builder.js.map +1 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/index.d.ts +3 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/index.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/index.js +6 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/index.js.map +1 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/types.d.ts +47 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/types.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/types.js +3 -0
- package/dist/workflow/implement/resource-check/tools/schema-semantic/types.js.map +1 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/index.d.ts +4 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/index.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/index.js +8 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/index.js.map +1 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/schema-extractor.d.ts +108 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/schema-extractor.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/schema-extractor.js +498 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/schema-extractor.js.map +1 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/semantic-normalizer.d.ts +51 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/semantic-normalizer.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/semantic-normalizer.js +271 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/semantic-normalizer.js.map +1 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/types.d.ts +133 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/types.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/types.js +3 -0
- package/dist/workflow/implement/resource-check/tools/terraform-schema/types.js.map +1 -0
- package/dist/workflow/implement/resource-check/types.d.ts +18 -0
- package/dist/workflow/implement/resource-check/types.d.ts.map +1 -0
- package/dist/workflow/implement/resource-check/types.js +107 -0
- package/dist/workflow/implement/resource-check/types.js.map +1 -0
- package/dist/workflow/types/rule/rule.d.ts +72 -0
- package/dist/workflow/types/rule/rule.d.ts.map +1 -0
- package/dist/workflow/types/rule/rule.js +110 -0
- package/dist/workflow/types/rule/rule.js.map +1 -0
- package/dist/workflow/workflow.d.ts +52 -0
- package/dist/workflow/workflow.d.ts.map +1 -0
- package/dist/workflow/workflow.js +121 -0
- package/dist/workflow/workflow.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TerraformSchemaSemanticNormalizer = void 0;
|
|
4
|
+
const DURATION_MULTIPLIERS_MS = {
|
|
5
|
+
Nanosecond: 1 / 1000000,
|
|
6
|
+
Microsecond: 1 / 1000,
|
|
7
|
+
Millisecond: 1,
|
|
8
|
+
Second: 1000,
|
|
9
|
+
Minute: 60000,
|
|
10
|
+
Hour: 3600000,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Conservative semantic normalizer on top of raw extractor output.
|
|
14
|
+
* It only derives values for whitelisted, high-confidence patterns.
|
|
15
|
+
*/
|
|
16
|
+
class TerraformSchemaSemanticNormalizer {
|
|
17
|
+
normalizeSchemas(goSource, schemas) {
|
|
18
|
+
return schemas.map((schema) => this.normalizeSchema(goSource, schema));
|
|
19
|
+
}
|
|
20
|
+
normalizeSchema(goSource, schema) {
|
|
21
|
+
const semantics = {};
|
|
22
|
+
const options = schema.resourceOptions;
|
|
23
|
+
if (!options) {
|
|
24
|
+
return schema;
|
|
25
|
+
}
|
|
26
|
+
semantics.importable = {
|
|
27
|
+
value: options.hasImporter,
|
|
28
|
+
confidence: "high",
|
|
29
|
+
};
|
|
30
|
+
if (options.timeouts) {
|
|
31
|
+
semantics.timeouts = this.normalizeTimeouts(options.timeouts);
|
|
32
|
+
}
|
|
33
|
+
if (options.customizeDiff) {
|
|
34
|
+
const forceNew = this.deriveForceNewFromCustomizeDiff(options.customizeDiff, goSource);
|
|
35
|
+
if (forceNew) {
|
|
36
|
+
semantics.forceNew = forceNew;
|
|
37
|
+
}
|
|
38
|
+
const nonUpdatable = this.deriveNonUpdatableFromCustomizeDiff(options.customizeDiff, goSource);
|
|
39
|
+
if (nonUpdatable) {
|
|
40
|
+
semantics.nonUpdatable = nonUpdatable;
|
|
41
|
+
}
|
|
42
|
+
else if (forceNew) {
|
|
43
|
+
// In provider practice, FlexibleForceNew implies fields are non-updatable.
|
|
44
|
+
semantics.nonUpdatable = {
|
|
45
|
+
fields: forceNew.fields,
|
|
46
|
+
confidence: "high",
|
|
47
|
+
source: "customizeDiff",
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (options.hasImporter) {
|
|
52
|
+
const importId = this.deriveImportIdParts(goSource, options.importerStateContext);
|
|
53
|
+
if (importId) {
|
|
54
|
+
semantics.importIdParts = importId;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
...schema,
|
|
59
|
+
resourceSemantics: semantics,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
normalizeTimeouts(timeouts) {
|
|
63
|
+
const normalized = {};
|
|
64
|
+
const entries = [
|
|
65
|
+
["create", "create"],
|
|
66
|
+
["read", "read"],
|
|
67
|
+
["update", "update"],
|
|
68
|
+
["delete", "delete"],
|
|
69
|
+
["default", "default"],
|
|
70
|
+
];
|
|
71
|
+
for (const [sourceKey, targetKey] of entries) {
|
|
72
|
+
const raw = timeouts[sourceKey];
|
|
73
|
+
if (!raw)
|
|
74
|
+
continue;
|
|
75
|
+
normalized[targetKey] = this.normalizeTimeoutValue(raw);
|
|
76
|
+
}
|
|
77
|
+
return normalized;
|
|
78
|
+
}
|
|
79
|
+
normalizeTimeoutValue(raw) {
|
|
80
|
+
const inner = this.unwrapDefaultTimeout(raw.trim());
|
|
81
|
+
const durationMs = this.parseDurationToMs(inner);
|
|
82
|
+
if (durationMs === undefined) {
|
|
83
|
+
return { raw, confidence: "none" };
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
raw,
|
|
87
|
+
milliseconds: durationMs,
|
|
88
|
+
confidence: "high",
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
unwrapDefaultTimeout(expr) {
|
|
92
|
+
const match = expr.match(/^schema\.DefaultTimeout\((.+)\)$/s);
|
|
93
|
+
if (!match)
|
|
94
|
+
return expr;
|
|
95
|
+
return match[1].trim();
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Parse conservative duration expressions:
|
|
99
|
+
* - `10 * time.Minute`
|
|
100
|
+
* - `time.Minute * 10`
|
|
101
|
+
*/
|
|
102
|
+
parseDurationToMs(expr) {
|
|
103
|
+
const leftMatch = expr.match(/^(\d+)\s*\*\s*time\.(\w+)$/);
|
|
104
|
+
if (leftMatch) {
|
|
105
|
+
const amount = Number(leftMatch[1]);
|
|
106
|
+
const unit = leftMatch[2];
|
|
107
|
+
const multiplier = DURATION_MULTIPLIERS_MS[unit];
|
|
108
|
+
if (multiplier === undefined)
|
|
109
|
+
return undefined;
|
|
110
|
+
return Math.round(amount * multiplier);
|
|
111
|
+
}
|
|
112
|
+
const rightMatch = expr.match(/^time\.(\w+)\s*\*\s*(\d+)$/);
|
|
113
|
+
if (rightMatch) {
|
|
114
|
+
const unit = rightMatch[1];
|
|
115
|
+
const amount = Number(rightMatch[2]);
|
|
116
|
+
const multiplier = DURATION_MULTIPLIERS_MS[unit];
|
|
117
|
+
if (multiplier === undefined)
|
|
118
|
+
return undefined;
|
|
119
|
+
return Math.round(amount * multiplier);
|
|
120
|
+
}
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
deriveForceNewFromCustomizeDiff(customizeDiff, goSource) {
|
|
124
|
+
const fields = this.extractFieldsFromDiffCall(customizeDiff, goSource, "config.FlexibleForceNew");
|
|
125
|
+
if (!fields || fields.length === 0)
|
|
126
|
+
return undefined;
|
|
127
|
+
return {
|
|
128
|
+
fields,
|
|
129
|
+
confidence: "high",
|
|
130
|
+
source: "customizeDiff",
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
deriveNonUpdatableFromCustomizeDiff(customizeDiff, goSource) {
|
|
134
|
+
const fields = this.extractFieldsFromDiffCall(customizeDiff, goSource, "config.FlexibleNonUpdatable");
|
|
135
|
+
if (!fields || fields.length === 0)
|
|
136
|
+
return undefined;
|
|
137
|
+
return {
|
|
138
|
+
fields,
|
|
139
|
+
confidence: "high",
|
|
140
|
+
source: "customizeDiff",
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Extract field names from a `funcName(fields)` call that may appear
|
|
145
|
+
* either as a standalone customizeDiff expression or inside a
|
|
146
|
+
* `customdiff.Sequence(...)` wrapper.
|
|
147
|
+
*/
|
|
148
|
+
extractFieldsFromDiffCall(customizeDiff, goSource, funcName) {
|
|
149
|
+
const escaped = funcName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
150
|
+
const pattern = new RegExp(`${escaped}\\(([\\s\\S]+?)\\)`, "m");
|
|
151
|
+
const callMatch = customizeDiff.match(pattern);
|
|
152
|
+
if (!callMatch)
|
|
153
|
+
return undefined;
|
|
154
|
+
const argExpr = callMatch[1].trim();
|
|
155
|
+
let fields = this.parseStringSliceLiteral(argExpr);
|
|
156
|
+
if (!fields && this.isIdentifier(argExpr)) {
|
|
157
|
+
fields = this.findStringSliceByIdentifier(goSource, argExpr);
|
|
158
|
+
}
|
|
159
|
+
return fields;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Derive the import ID parts from the importer state function.
|
|
163
|
+
*
|
|
164
|
+
* - `schema.ImportStatePassthroughContext` => bare resource ID
|
|
165
|
+
* - Custom function => look up the function body and parse
|
|
166
|
+
* `strings.Split(d.Id(), "/")` style patterns to infer parts.
|
|
167
|
+
*/
|
|
168
|
+
deriveImportIdParts(goSource, stateContext) {
|
|
169
|
+
if (!stateContext)
|
|
170
|
+
return undefined;
|
|
171
|
+
if (stateContext === "schema.ImportStatePassthroughContext" ||
|
|
172
|
+
stateContext === "schema.ImportStatePassthrough") {
|
|
173
|
+
return { parts: ["id"], separator: "/", confidence: "high" };
|
|
174
|
+
}
|
|
175
|
+
const funcBody = this.findFuncBody(goSource, stateContext);
|
|
176
|
+
if (!funcBody)
|
|
177
|
+
return undefined;
|
|
178
|
+
return this.parseImportIdFromFuncBody(funcBody);
|
|
179
|
+
}
|
|
180
|
+
findFuncBody(goSource, funcName) {
|
|
181
|
+
const escaped = funcName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
182
|
+
const headerPattern = new RegExp(`func\\s+${escaped}\\s*\\([\\s\\S]*?\\)\\s*[^{]*\\{`, "m");
|
|
183
|
+
const headerMatch = goSource.match(headerPattern);
|
|
184
|
+
if (!headerMatch)
|
|
185
|
+
return undefined;
|
|
186
|
+
const bodyStart = headerMatch.index + headerMatch[0].length;
|
|
187
|
+
const rest = goSource.slice(bodyStart);
|
|
188
|
+
// Match the closing brace at column 0 (no leading whitespace on that line).
|
|
189
|
+
const closingMatch = rest.match(/\n\}/);
|
|
190
|
+
if (!closingMatch)
|
|
191
|
+
return undefined;
|
|
192
|
+
let depth = 1;
|
|
193
|
+
for (let i = 0; i < rest.length; i++) {
|
|
194
|
+
if (rest[i] === "{")
|
|
195
|
+
depth++;
|
|
196
|
+
if (rest[i] === "}") {
|
|
197
|
+
depth--;
|
|
198
|
+
if (depth === 0) {
|
|
199
|
+
return rest.slice(0, i);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return rest.slice(0, closingMatch.index);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Best-effort parsing of an import state function body.
|
|
207
|
+
* Recognises two common patterns:
|
|
208
|
+
*
|
|
209
|
+
* 1. `parts := strings.Split(d.Id(), "/")`
|
|
210
|
+
* followed by length check and `d.Set("field", parts[i])` calls.
|
|
211
|
+
*
|
|
212
|
+
* 2. `parts := strings.SplitN(d.Id(), "/", N)`
|
|
213
|
+
* same downstream pattern.
|
|
214
|
+
*/
|
|
215
|
+
parseImportIdFromFuncBody(body) {
|
|
216
|
+
const splitMatch = body.match(/strings\.SplitN?\(\s*(?:d\.Id\(\)|[a-zA-Z_]\w*)\s*,\s*"([^"]+)"\s*(?:,\s*(\d+)\s*)?\)/);
|
|
217
|
+
if (!splitMatch)
|
|
218
|
+
return undefined;
|
|
219
|
+
const separator = splitMatch[1];
|
|
220
|
+
const splitCount = splitMatch[2] ? Number(splitMatch[2]) : undefined;
|
|
221
|
+
const setPattern = /d\.Set\(\s*"([^"]+)"\s*,\s*parts\[(\d+)\]/g;
|
|
222
|
+
const partsMap = new Map();
|
|
223
|
+
let m;
|
|
224
|
+
while ((m = setPattern.exec(body)) !== null) {
|
|
225
|
+
partsMap.set(Number(m[2]), m[1]);
|
|
226
|
+
}
|
|
227
|
+
const setIdPattern = /d\.SetId\(\s*parts\[(\d+)\]/g;
|
|
228
|
+
while ((m = setIdPattern.exec(body)) !== null) {
|
|
229
|
+
const idx = Number(m[1]);
|
|
230
|
+
if (!partsMap.has(idx)) {
|
|
231
|
+
partsMap.set(idx, "id");
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (partsMap.size === 0)
|
|
235
|
+
return undefined;
|
|
236
|
+
const expectedCount = splitCount ?? Math.max(...partsMap.keys()) + 1;
|
|
237
|
+
const parts = [];
|
|
238
|
+
for (let i = 0; i < expectedCount; i++) {
|
|
239
|
+
parts.push(partsMap.get(i) ?? `_unknown_${i}`);
|
|
240
|
+
}
|
|
241
|
+
return { parts, separator, confidence: "high" };
|
|
242
|
+
}
|
|
243
|
+
isIdentifier(expr) {
|
|
244
|
+
return /^[A-Za-z_]\w*$/.test(expr);
|
|
245
|
+
}
|
|
246
|
+
findStringSliceByIdentifier(goSource, identifier) {
|
|
247
|
+
const escaped = identifier.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
248
|
+
const pattern = new RegExp(`(?:var\\s+${escaped}\\s*=|${escaped}\\s*:=)\\s*\\[\\]string\\s*\\{([\\s\\S]*?)\\}`, "m");
|
|
249
|
+
const match = goSource.match(pattern);
|
|
250
|
+
if (!match)
|
|
251
|
+
return undefined;
|
|
252
|
+
return this.extractStringLiterals(match[1]);
|
|
253
|
+
}
|
|
254
|
+
parseStringSliceLiteral(expr) {
|
|
255
|
+
const match = expr.match(/^\[\]string\s*\{([\s\S]*?)\}$/);
|
|
256
|
+
if (!match)
|
|
257
|
+
return undefined;
|
|
258
|
+
return this.extractStringLiterals(match[1]);
|
|
259
|
+
}
|
|
260
|
+
extractStringLiterals(content) {
|
|
261
|
+
const values = [];
|
|
262
|
+
const regex = /"((?:[^"\\]|\\.)*)"/g;
|
|
263
|
+
let match;
|
|
264
|
+
while ((match = regex.exec(content)) !== null) {
|
|
265
|
+
values.push(match[1]);
|
|
266
|
+
}
|
|
267
|
+
return values;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
exports.TerraformSchemaSemanticNormalizer = TerraformSchemaSemanticNormalizer;
|
|
271
|
+
//# sourceMappingURL=semantic-normalizer.js.map
|
package/dist/workflow/implement/resource-check/tools/terraform-schema/semantic-normalizer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-normalizer.js","sourceRoot":"","sources":["../../../../../../src/workflow/implement/resource-check/tools/terraform-schema/semantic-normalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terraform schema field types matching the `schema.Type*` constants
|
|
3
|
+
* in the Terraform Plugin SDK.
|
|
4
|
+
*/
|
|
5
|
+
export type SchemaFieldType = "TypeString" | "TypeBool" | "TypeInt" | "TypeFloat" | "TypeList" | "TypeSet" | "TypeMap";
|
|
6
|
+
/**
|
|
7
|
+
* A single field extracted from a Terraform resource schema definition.
|
|
8
|
+
*/
|
|
9
|
+
export interface SchemaField {
|
|
10
|
+
/** Field name as declared in the schema map key (e.g. "instance_type") */
|
|
11
|
+
name: string;
|
|
12
|
+
/** Terraform SDK type (e.g. "TypeString") or raw string if unrecognized */
|
|
13
|
+
type: SchemaFieldType | string;
|
|
14
|
+
/** Whether the field has `Required: true` */
|
|
15
|
+
required: boolean;
|
|
16
|
+
/** Whether the field has `Optional: true` */
|
|
17
|
+
optional: boolean;
|
|
18
|
+
/** Whether the field has `Computed: true` */
|
|
19
|
+
computed: boolean;
|
|
20
|
+
/** Whether the field has `ForceNew: true` */
|
|
21
|
+
forceNew: boolean;
|
|
22
|
+
/** The Description string, empty if not specified */
|
|
23
|
+
description: string;
|
|
24
|
+
/** Default value as raw source text, undefined if not specified */
|
|
25
|
+
defaultValue?: string;
|
|
26
|
+
/** Element type for TypeList/TypeSet/TypeMap, undefined if not applicable */
|
|
27
|
+
elemType?: SchemaFieldType | string;
|
|
28
|
+
/** Nested sub-fields when Elem is a *schema.Resource (block-level nesting) */
|
|
29
|
+
subFields?: SchemaField[];
|
|
30
|
+
/** Whether the field is marked as internal via utils.SchemaDesc */
|
|
31
|
+
internal?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Represents one Terraform resource/data-source schema extracted from
|
|
35
|
+
* a Go source file.
|
|
36
|
+
*/
|
|
37
|
+
export interface ResourceSchema {
|
|
38
|
+
/** Resource name inferred from the function name (e.g. "aws_instance") */
|
|
39
|
+
resourceName: string;
|
|
40
|
+
/** The original Go function name (e.g. "resourceAwsInstance") */
|
|
41
|
+
functionName: string;
|
|
42
|
+
/** All top-level schema fields */
|
|
43
|
+
fields: SchemaField[];
|
|
44
|
+
/**
|
|
45
|
+
* Resource-level options extracted from `&schema.Resource{ ... }`,
|
|
46
|
+
* such as Timeouts, Importer, and CustomizeDiff.
|
|
47
|
+
*/
|
|
48
|
+
resourceOptions?: ResourceOptions;
|
|
49
|
+
/**
|
|
50
|
+
* Optional normalized semantic view derived from raw resource options.
|
|
51
|
+
* This is best-effort and keeps conservative confidence signals.
|
|
52
|
+
*/
|
|
53
|
+
resourceSemantics?: ResourceSemantics;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Timeout expressions configured on `schema.ResourceTimeout`.
|
|
57
|
+
* Values are kept as raw Go expressions for compatibility.
|
|
58
|
+
*/
|
|
59
|
+
export interface ResourceTimeouts {
|
|
60
|
+
create?: string;
|
|
61
|
+
read?: string;
|
|
62
|
+
update?: string;
|
|
63
|
+
delete?: string;
|
|
64
|
+
default?: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Resource-level capabilities/metadata extracted from a schema resource.
|
|
68
|
+
*/
|
|
69
|
+
export interface ResourceOptions {
|
|
70
|
+
/** Whether an Importer block is configured. */
|
|
71
|
+
hasImporter: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Importer state handler expression (for example
|
|
74
|
+
* `schema.ImportStatePassthroughContext`), if present.
|
|
75
|
+
*/
|
|
76
|
+
importerStateContext?: string;
|
|
77
|
+
/** Raw expression assigned to CustomizeDiff. */
|
|
78
|
+
customizeDiff?: string;
|
|
79
|
+
/** Deprecation message from DeprecationMessage field. */
|
|
80
|
+
deprecationMessage?: string;
|
|
81
|
+
/** Parsed timeout expressions from Timeouts block. */
|
|
82
|
+
timeouts?: ResourceTimeouts;
|
|
83
|
+
}
|
|
84
|
+
/** Confidence levels for conservative semantic derivation. */
|
|
85
|
+
export type SemanticConfidence = "high" | "none";
|
|
86
|
+
/** Normalized timeout semantic value with raw fallback and confidence. */
|
|
87
|
+
export interface TimeoutSemanticValue {
|
|
88
|
+
raw: string;
|
|
89
|
+
milliseconds?: number;
|
|
90
|
+
confidence: SemanticConfidence;
|
|
91
|
+
}
|
|
92
|
+
/** Semantic projection of timeout settings. */
|
|
93
|
+
export interface ResourceTimeoutSemantics {
|
|
94
|
+
create?: TimeoutSemanticValue;
|
|
95
|
+
read?: TimeoutSemanticValue;
|
|
96
|
+
update?: TimeoutSemanticValue;
|
|
97
|
+
delete?: TimeoutSemanticValue;
|
|
98
|
+
default?: TimeoutSemanticValue;
|
|
99
|
+
}
|
|
100
|
+
/** Semantic projection for force-new behavior inferred from CustomizeDiff. */
|
|
101
|
+
export interface ForceNewSemantics {
|
|
102
|
+
fields: string[];
|
|
103
|
+
confidence: SemanticConfidence;
|
|
104
|
+
source: "customizeDiff";
|
|
105
|
+
}
|
|
106
|
+
/** Semantic projection for non-updatable behavior inferred from CustomizeDiff. */
|
|
107
|
+
export interface NonUpdatableSemantics {
|
|
108
|
+
fields: string[];
|
|
109
|
+
confidence: SemanticConfidence;
|
|
110
|
+
source: "customizeDiff";
|
|
111
|
+
}
|
|
112
|
+
/** Semantic projection for import capability. */
|
|
113
|
+
export interface ImportableSemantics {
|
|
114
|
+
value: boolean;
|
|
115
|
+
confidence: "high";
|
|
116
|
+
}
|
|
117
|
+
/** Semantic projection for import ID format. */
|
|
118
|
+
export interface ImportIdSemantics {
|
|
119
|
+
/** Ordered parts of the import ID (e.g. ["region", "id"]). */
|
|
120
|
+
parts: string[];
|
|
121
|
+
/** Separator used to join parts (typically "/"). */
|
|
122
|
+
separator: string;
|
|
123
|
+
confidence: SemanticConfidence;
|
|
124
|
+
}
|
|
125
|
+
/** Consolidated semantic view for a resource schema. */
|
|
126
|
+
export interface ResourceSemantics {
|
|
127
|
+
importable?: ImportableSemantics;
|
|
128
|
+
timeouts?: ResourceTimeoutSemantics;
|
|
129
|
+
forceNew?: ForceNewSemantics;
|
|
130
|
+
nonUpdatable?: NonUpdatableSemantics;
|
|
131
|
+
importIdParts?: ImportIdSemantics;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/workflow/implement/resource-check/tools/terraform-schema/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/workflow/implement/resource-check/tools/terraform-schema/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type ResourceType = "resource" | "data-source";
|
|
2
|
+
export type { SemanticField, TimeoutView, ImportView, SchemaSemanticView, } from "./tools/schema-semantic";
|
|
3
|
+
export type { Argument, Attribute, ArgumentList, AttributeList, } from "./tools/doc-semantic";
|
|
4
|
+
export { DocSemanticView } from "./tools/doc-semantic";
|
|
5
|
+
export interface ResourceCheckInput {
|
|
6
|
+
providerRoot: string;
|
|
7
|
+
serviceName: string;
|
|
8
|
+
resourceName: string;
|
|
9
|
+
resourceType: ResourceType;
|
|
10
|
+
}
|
|
11
|
+
export interface ResolvedResourcePaths {
|
|
12
|
+
implementGoPath: string;
|
|
13
|
+
docMdPath: string;
|
|
14
|
+
testGoPath: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function parseResourceCheckInput(jsonCode: string): ResourceCheckInput;
|
|
17
|
+
export declare function resolveResourcePaths(input: ResourceCheckInput): ResolvedResourcePaths;
|
|
18
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/workflow/implement/resource-check/types.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,aAAa,CAAC;AAEtD,YAAY,EACR,aAAa,EACb,WAAW,EACX,UAAU,EACV,kBAAkB,GACrB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACR,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,aAAa,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AA2DD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CA6B5E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,qBAAqB,CA4BrF"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DocSemanticView = void 0;
|
|
7
|
+
exports.parseResourceCheckInput = parseResourceCheckInput;
|
|
8
|
+
exports.resolveResourcePaths = resolveResourcePaths;
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
var doc_semantic_1 = require("./tools/doc-semantic");
|
|
12
|
+
Object.defineProperty(exports, "DocSemanticView", { enumerable: true, get: function () { return doc_semantic_1.DocSemanticView; } });
|
|
13
|
+
/**
|
|
14
|
+
* Infer the provider short name from the providerRoot directory name.
|
|
15
|
+
* e.g. "terraform-provider-huaweicloud" -> "huaweicloud"
|
|
16
|
+
*/
|
|
17
|
+
function inferProviderName(providerRoot) {
|
|
18
|
+
const root = path_1.default.resolve(providerRoot);
|
|
19
|
+
const dirName = path_1.default.basename(root);
|
|
20
|
+
const prefix = "terraform-provider-";
|
|
21
|
+
if (dirName.startsWith(prefix)) {
|
|
22
|
+
return dirName.slice(prefix.length);
|
|
23
|
+
}
|
|
24
|
+
// Prefer structural detection for fixtures/non-standard roots:
|
|
25
|
+
// <root>/<provider>/services/** or <root>/services/**.
|
|
26
|
+
const providerDirs = detectProviderDirs(root);
|
|
27
|
+
if (providerDirs.length === 1) {
|
|
28
|
+
return providerDirs[0];
|
|
29
|
+
}
|
|
30
|
+
return dirName;
|
|
31
|
+
}
|
|
32
|
+
function detectProviderDirs(root) {
|
|
33
|
+
if (!fs_1.default.existsSync(root))
|
|
34
|
+
return [];
|
|
35
|
+
if (fs_1.default.existsSync(path_1.default.join(root, "services"))) {
|
|
36
|
+
return [path_1.default.basename(root)];
|
|
37
|
+
}
|
|
38
|
+
const entries = fs_1.default.readdirSync(root, { withFileTypes: true });
|
|
39
|
+
return entries
|
|
40
|
+
.filter((entry) => entry.isDirectory())
|
|
41
|
+
.map((entry) => entry.name)
|
|
42
|
+
.filter((name) => fs_1.default.existsSync(path_1.default.join(root, name, "services")));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Strip the provider prefix from the resource name to get the short doc name.
|
|
46
|
+
* e.g. provider="huaweicloud", resourceName="apig_channel_member"
|
|
47
|
+
* -> already has no provider prefix, returns "apig_channel_member"
|
|
48
|
+
* e.g. provider="huaweicloud", resourceName="huaweicloud_apig_channel_member"
|
|
49
|
+
* -> strips prefix, returns "apig_channel_member"
|
|
50
|
+
*/
|
|
51
|
+
function stripProviderPrefix(provider, resourceName) {
|
|
52
|
+
const prefix = `${provider}_`;
|
|
53
|
+
if (resourceName.startsWith(prefix)) {
|
|
54
|
+
return resourceName.slice(prefix.length);
|
|
55
|
+
}
|
|
56
|
+
return resourceName;
|
|
57
|
+
}
|
|
58
|
+
function buildFullResourceName(provider, resourceName) {
|
|
59
|
+
const prefix = `${provider}_`;
|
|
60
|
+
if (resourceName.startsWith(prefix)) {
|
|
61
|
+
return resourceName;
|
|
62
|
+
}
|
|
63
|
+
return `${prefix}${resourceName}`;
|
|
64
|
+
}
|
|
65
|
+
function parseResourceCheckInput(jsonCode) {
|
|
66
|
+
let parsed;
|
|
67
|
+
try {
|
|
68
|
+
parsed = JSON.parse(jsonCode);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
throw new Error("resource-check expects JSON-encoded ResourceCheckInput as code input");
|
|
72
|
+
}
|
|
73
|
+
const obj = parsed;
|
|
74
|
+
if (typeof obj.providerRoot !== "string" ||
|
|
75
|
+
typeof obj.serviceName !== "string" ||
|
|
76
|
+
typeof obj.resourceName !== "string" ||
|
|
77
|
+
(obj.resourceType !== "resource" && obj.resourceType !== "data-source")) {
|
|
78
|
+
throw new Error("ResourceCheckInput requires: providerRoot (string), serviceName (string), " +
|
|
79
|
+
"resourceName (string), resourceType ('resource' | 'data-source')");
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
providerRoot: obj.providerRoot,
|
|
83
|
+
serviceName: obj.serviceName,
|
|
84
|
+
resourceName: obj.resourceName,
|
|
85
|
+
resourceType: obj.resourceType,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function resolveResourcePaths(input) {
|
|
89
|
+
const root = path_1.default.resolve(input.providerRoot);
|
|
90
|
+
const provider = inferProviderName(root);
|
|
91
|
+
const fullName = buildFullResourceName(provider, input.resourceName);
|
|
92
|
+
const shortName = stripProviderPrefix(provider, input.resourceName);
|
|
93
|
+
const providerBase = fs_1.default.existsSync(path_1.default.join(root, "services"))
|
|
94
|
+
? root
|
|
95
|
+
: path_1.default.join(root, provider);
|
|
96
|
+
const filePrefix = input.resourceType === "resource"
|
|
97
|
+
? `resource_${fullName}`
|
|
98
|
+
: `data_source_${fullName}`;
|
|
99
|
+
const docDir = input.resourceType === "resource"
|
|
100
|
+
? "resources"
|
|
101
|
+
: "data-sources";
|
|
102
|
+
const implementGoPath = path_1.default.join(providerBase, "services", input.serviceName, `${filePrefix}.go`);
|
|
103
|
+
const testGoPath = path_1.default.join(providerBase, "services", "acceptance", input.serviceName, `${filePrefix}_test.go`);
|
|
104
|
+
const docMdPath = path_1.default.join(root, "docs", docDir, `${shortName}.md`);
|
|
105
|
+
return { implementGoPath, docMdPath, testGoPath };
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/workflow/implement/resource-check/types.ts"],"names":[],"mappings":";;;;;;AAyFA,0DA6BC;AAED,oDA4BC;AApJD,4CAAoB;AACpB,gDAAwB;AAgBxB,qDAAuD;AAA9C,+GAAA,eAAe,OAAA;AAexB;;;GAGG;AACH,SAAS,iBAAiB,CAAC,YAAoB;IAC3C,MAAM,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,qBAAqB,CAAC;IACrC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,+DAA+D;IAC/D,uDAAuD;IACvD,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACpC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,OAAO,GAAG,YAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,OAAO;SACT,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,QAAgB,EAAE,YAAoB;IAC/D,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAC;IAC9B,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB,EAAE,YAAoB;IACjE,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAC;IAC9B,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,MAAM,GAAG,YAAY,EAAE,CAAC;AACtC,CAAC;AAED,SAAgB,uBAAuB,CAAC,QAAgB;IACpD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,IAAI,KAAK,CACX,sEAAsE,CACzE,CAAC;IACN,CAAC;IAED,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,IACI,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;QACpC,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;QACnC,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;QACpC,CAAC,GAAG,CAAC,YAAY,KAAK,UAAU,IAAI,GAAG,CAAC,YAAY,KAAK,aAAa,CAAC,EACzE,CAAC;QACC,MAAM,IAAI,KAAK,CACX,4EAA4E;YAC5E,kEAAkE,CACrE,CAAC;IACN,CAAC;IAED,OAAO;QACH,YAAY,EAAE,GAAG,CAAC,YAAsB;QACxC,WAAW,EAAE,GAAG,CAAC,WAAqB;QACtC,YAAY,EAAE,GAAG,CAAC,YAAsB;QACxC,YAAY,EAAE,GAAG,CAAC,YAA4B;KACjD,CAAC;AACN,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAyB;IAC1D,MAAM,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3D,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEhC,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,KAAK,UAAU;QAChD,CAAC,CAAC,YAAY,QAAQ,EAAE;QACxB,CAAC,CAAC,eAAe,QAAQ,EAAE,CAAC;IAEhC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,KAAK,UAAU;QAC5C,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,cAAc,CAAC;IAErB,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAC7B,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,UAAU,KAAK,CAClE,CAAC;IAEF,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CACxB,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,UAAU,UAAU,CACrF,CAAC;IAEF,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;IAErE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Context } from "../../context/context";
|
|
2
|
+
import type { SourceRange } from "../../../tools/ast-parser/markdown";
|
|
3
|
+
export declare class RuleCheckResult {
|
|
4
|
+
success: boolean;
|
|
5
|
+
message: string;
|
|
6
|
+
original: string;
|
|
7
|
+
suggested: string;
|
|
8
|
+
children: RuleCheckResult[];
|
|
9
|
+
range?: SourceRange;
|
|
10
|
+
constructor(success: boolean, message: string, original: string, suggested: string, children?: RuleCheckResult[], range?: SourceRange);
|
|
11
|
+
static aggregate(children: RuleCheckResult[]): RuleCheckResult;
|
|
12
|
+
static pass(message: string, range?: SourceRange, original?: string, suggested?: string, children?: RuleCheckResult[]): RuleCheckResult;
|
|
13
|
+
static fromLine(line?: number): SourceRange | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Aggregate success: this result is successful only when itself
|
|
16
|
+
* AND all descendant results are successful.
|
|
17
|
+
*/
|
|
18
|
+
get aggregateSuccess(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Collect all failing results across the tree (depth-first).
|
|
21
|
+
*/
|
|
22
|
+
collectFailures(): RuleCheckResult[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Message templates keyed by a short identifier.
|
|
26
|
+
* Values can be plain strings or functions that accept interpolation args.
|
|
27
|
+
*/
|
|
28
|
+
export type MessageTemplate = string | ((...args: unknown[]) => string);
|
|
29
|
+
export interface RuleMeta {
|
|
30
|
+
name: string;
|
|
31
|
+
description: string;
|
|
32
|
+
messages: Record<string, MessageTemplate>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Abstract base class for code checking rules.
|
|
36
|
+
*
|
|
37
|
+
* Supports a tree structure: each rule can have child rules.
|
|
38
|
+
* Subclasses override `test()` to implement their checking logic
|
|
39
|
+
* and can call `executeChildren()` to dispatch child rules.
|
|
40
|
+
*
|
|
41
|
+
* Rule metadata (name, description, error message templates) is
|
|
42
|
+
* declared separately via `RuleMeta` so that checking logic stays
|
|
43
|
+
* focused on *what* to check rather than *how to describe* results.
|
|
44
|
+
*/
|
|
45
|
+
export declare abstract class Rule {
|
|
46
|
+
readonly name: string;
|
|
47
|
+
readonly description: string;
|
|
48
|
+
readonly type: string;
|
|
49
|
+
readonly meta: RuleMeta;
|
|
50
|
+
protected readonly children: Rule[];
|
|
51
|
+
constructor(meta: RuleMeta, type?: string);
|
|
52
|
+
addChild(rule: Rule): this;
|
|
53
|
+
addChildren(rules: Rule[]): this;
|
|
54
|
+
getChildren(): ReadonlyArray<Rule>;
|
|
55
|
+
/**
|
|
56
|
+
* Build a failing `RuleCheckResult` from a registered message key.
|
|
57
|
+
* Extra `args` are forwarded when the template is a function.
|
|
58
|
+
*/
|
|
59
|
+
protected fail(key: string, original: string, suggested?: string, range?: SourceRange, ...args: unknown[]): RuleCheckResult;
|
|
60
|
+
protected msg(key: string, ...args: unknown[]): string;
|
|
61
|
+
/**
|
|
62
|
+
* Tests the given code against this rule.
|
|
63
|
+
* Subclasses implement their own checking strategy here.
|
|
64
|
+
*/
|
|
65
|
+
abstract test(code: string, ast?: unknown, parentCtx?: Context): Promise<RuleCheckResult[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Dispatches child rules sequentially.
|
|
68
|
+
* Available for parent rules that need to coordinate children.
|
|
69
|
+
*/
|
|
70
|
+
protected executeChildren(code: string, ast: unknown | undefined, ctx: Context): Promise<RuleCheckResult[]>;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/workflow/types/rule/rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEtE,qBAAa,eAAe;IAEjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,WAAW,CAAC;gBAGvB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,eAAe,EAAO,EAChC,KAAK,CAAC,EAAE,WAAW;IAUvB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,eAAe;IAI9D,MAAM,CAAC,IAAI,CACP,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,WAAW,EACnB,QAAQ,GAAE,MAAW,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,GAAE,eAAe,EAAO,GACjC,eAAe;IAYlB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAQvD;;;OAGG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAG9B;IAED;;OAEG;IACH,eAAe,IAAI,eAAe,EAAE;CAQvC;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC;AAExE,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED;;;;;;;;;;GAUG;AACH,8BAAsB,IAAI;IAEtB,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,IAAI,EAAE,QAAQ,CAAC;IAC/B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAM;gBAEtB,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,MAAe;IASjD,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAK1B,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAKhC,WAAW,IAAI,aAAa,CAAC,IAAI,CAAC;IAMzC;;;OAGG;IACH,SAAS,CAAC,IAAI,CACV,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,WAAW,EACnB,GAAG,IAAI,EAAE,OAAO,EAAE,GACnB,eAAe;IAWlB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM;IAQtD;;;OAGG;aACa,IAAI,CAChB,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,OAAO,EACb,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,eAAe,EAAE,CAAC;IAE7B;;;OAGG;cACa,eAAe,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,GAAG,SAAS,EACxB,GAAG,EAAE,OAAO,GACb,OAAO,CAAC,eAAe,EAAE,CAAC;CAQhC"}
|