@intentius/chant-lexicon-render 0.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -0
- package/dist/catalog.d.ts +100 -0
- package/dist/catalog.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 +21 -0
- package/dist/codegen/docs.d.ts.map +1 -0
- package/dist/codegen/generate-cli.d.ts +6 -0
- package/dist/codegen/generate-cli.d.ts.map +1 -0
- package/dist/codegen/generate-lexicon.d.ts +18 -0
- package/dist/codegen/generate-lexicon.d.ts.map +1 -0
- package/dist/codegen/generate-typescript.d.ts +12 -0
- package/dist/codegen/generate-typescript.d.ts.map +1 -0
- package/dist/codegen/generate.d.ts +15 -0
- package/dist/codegen/generate.d.ts.map +1 -0
- package/dist/codegen/naming.d.ts +14 -0
- package/dist/codegen/naming.d.ts.map +1 -0
- package/dist/codegen/package.d.ts +17 -0
- package/dist/codegen/package.d.ts.map +1 -0
- package/dist/composites/render-deploy.d.ts +88 -0
- package/dist/composites/render-deploy.d.ts.map +1 -0
- package/dist/coverage.d.ts +15 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/describe-resources.d.ts +60 -0
- package/dist/describe-resources.d.ts.map +1 -0
- package/dist/detect.d.ts +12 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/generated/index.d.ts +38 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/runtime.d.ts +5 -0
- package/dist/generated/runtime.d.ts.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/integrity.json +18 -0
- package/dist/lint/audit-catalog.d.ts +13 -0
- package/dist/lint/audit-catalog.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/ren010-native-runtime-requires-commands.d.ts +12 -0
- package/dist/lint/post-synth/ren010-native-runtime-requires-commands.d.ts.map +1 -0
- package/dist/lint/post-synth/ren011-service-requires-source.d.ts +12 -0
- package/dist/lint/post-synth/ren011-service-requires-source.d.ts.map +1 -0
- package/dist/lint/post-synth/ren012-free-plan-cannot-scale.d.ts +11 -0
- package/dist/lint/post-synth/ren012-free-plan-cannot-scale.d.ts.map +1 -0
- package/dist/lint/post-synth/render-helpers.d.ts +19 -0
- package/dist/lint/post-synth/render-helpers.d.ts.map +1 -0
- package/dist/lint/rules/index.d.ts +7 -0
- package/dist/lint/rules/index.d.ts.map +1 -0
- package/dist/lint/rules/no-secret-literals.d.ts +13 -0
- package/dist/lint/rules/no-secret-literals.d.ts.map +1 -0
- package/dist/lint/rules/valid-cron-schedule.d.ts +12 -0
- package/dist/lint/rules/valid-cron-schedule.d.ts.map +1 -0
- package/dist/lint/rules/valid-region.d.ts +16 -0
- package/dist/lint/rules/valid-region.d.ts.map +1 -0
- package/dist/lsp/completions.d.ts +8 -0
- package/dist/lsp/completions.d.ts.map +1 -0
- package/dist/lsp/hover.d.ts +6 -0
- package/dist/lsp/hover.d.ts.map +1 -0
- package/dist/manifest.json +6 -0
- package/dist/meta.json +304 -0
- package/dist/okf/index.md +29 -0
- package/dist/okf/rules/REN001.md +11 -0
- package/dist/okf/rules/REN002.md +15 -0
- package/dist/okf/rules/REN003.md +15 -0
- package/dist/okf/rules/REN010.md +11 -0
- package/dist/okf/rules/REN011.md +11 -0
- package/dist/okf/rules/REN012.md +11 -0
- package/dist/okf/types/BackgroundWorker.md +24 -0
- package/dist/okf/types/CronJob.md +28 -0
- package/dist/okf/types/CustomDomain.md +14 -0
- package/dist/okf/types/Disk.md +16 -0
- package/dist/okf/types/EnvGroup.md +22 -0
- package/dist/okf/types/Environment.md +17 -0
- package/dist/okf/types/KeyValue.md +20 -0
- package/dist/okf/types/Postgres.md +29 -0
- package/dist/okf/types/PrivateService.md +24 -0
- package/dist/okf/types/Project.md +15 -0
- package/dist/okf/types/RegistryCredential.md +17 -0
- package/dist/okf/types/StaticSite.md +24 -0
- package/dist/okf/types/WebService.md +24 -0
- package/dist/okf/types/Webhook.md +17 -0
- package/dist/op/activities/fake-render.d.ts +52 -0
- package/dist/op/activities/fake-render.d.ts.map +1 -0
- package/dist/op/activities/index.d.ts +10 -0
- package/dist/op/activities/index.d.ts.map +1 -0
- package/dist/op/activities/render-apply.d.ts +229 -0
- package/dist/op/activities/render-apply.d.ts.map +1 -0
- package/dist/ownership.d.ts +32 -0
- package/dist/ownership.d.ts.map +1 -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/pseudo.d.ts +21 -0
- package/dist/pseudo.d.ts.map +1 -0
- package/dist/rules/no-secret-literals.ts +73 -0
- package/dist/rules/ren010-native-runtime-requires-commands.ts +47 -0
- package/dist/rules/ren011-service-requires-source.ts +50 -0
- package/dist/rules/ren012-free-plan-cannot-scale.ts +43 -0
- package/dist/rules/render-helpers.ts +38 -0
- package/dist/rules/valid-cron-schedule.ts +51 -0
- package/dist/rules/valid-region.ts +49 -0
- package/dist/serializer.d.ts +99 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/skills/chant-render-patterns.md +126 -0
- package/dist/skills/chant-render.md +112 -0
- package/dist/spec/fetch.d.ts +21 -0
- package/dist/spec/fetch.d.ts.map +1 -0
- package/dist/spec/parse.d.ts +120 -0
- package/dist/spec/parse.d.ts.map +1 -0
- package/dist/types/index.d.ts +573 -0
- package/dist/validate-cli.d.ts +3 -0
- package/dist/validate-cli.d.ts.map +1 -0
- package/dist/validate.d.ts +15 -0
- package/dist/validate.d.ts.map +1 -0
- package/package.json +73 -0
- package/src/catalog.ts +286 -0
- package/src/codegen/docs-cli.ts +7 -0
- package/src/codegen/docs.ts +120 -0
- package/src/codegen/generate-cli.ts +36 -0
- package/src/codegen/generate-lexicon.ts +52 -0
- package/src/codegen/generate-typescript.ts +70 -0
- package/src/codegen/generate.ts +106 -0
- package/src/codegen/naming.ts +55 -0
- package/src/codegen/package.ts +30 -0
- package/src/composites/render-deploy.ts +133 -0
- package/src/coverage.ts +49 -0
- package/src/describe-resources.test.ts +143 -0
- package/src/describe-resources.ts +366 -0
- package/src/detect.ts +29 -0
- package/src/generated/index.d.ts +573 -0
- package/src/generated/index.ts +43 -0
- package/src/generated/lexicon-render.json +304 -0
- package/src/generated/runtime.ts +4 -0
- package/src/index.ts +30 -0
- package/src/lint/audit-catalog.ts +47 -0
- package/src/lint/post-synth/index.ts +11 -0
- package/src/lint/post-synth/post-synth.test.ts +151 -0
- package/src/lint/post-synth/ren010-native-runtime-requires-commands.ts +47 -0
- package/src/lint/post-synth/ren011-service-requires-source.ts +50 -0
- package/src/lint/post-synth/ren012-free-plan-cannot-scale.ts +43 -0
- package/src/lint/post-synth/render-helpers.ts +38 -0
- package/src/lint/rules/index.ts +11 -0
- package/src/lint/rules/no-secret-literals.ts +73 -0
- package/src/lint/rules/rules.test.ts +73 -0
- package/src/lint/rules/valid-cron-schedule.ts +51 -0
- package/src/lint/rules/valid-region.ts +49 -0
- package/src/lsp/completions.test.ts +28 -0
- package/src/lsp/completions.ts +22 -0
- package/src/lsp/hover.test.ts +32 -0
- package/src/lsp/hover.ts +50 -0
- package/src/op/activities/fake-render.ts +275 -0
- package/src/op/activities/index.ts +51 -0
- package/src/op/activities/render-apply.test.ts +403 -0
- package/src/op/activities/render-apply.ts +1042 -0
- package/src/ownership.ts +44 -0
- package/src/package-cli.ts +23 -0
- package/src/plugin.test.ts +54 -0
- package/src/plugin.ts +258 -0
- package/src/pseudo.ts +26 -0
- package/src/serializer.test.ts +221 -0
- package/src/serializer.ts +286 -0
- package/src/skills/chant-render-patterns.md +126 -0
- package/src/skills/chant-render.md +112 -0
- package/src/spec/fetch.ts +33 -0
- package/src/spec/parse.ts +721 -0
- package/src/validate-cli.ts +5 -0
- package/src/validate.ts +47 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"algorithm": "sha256",
|
|
3
|
+
"artifacts": {
|
|
4
|
+
"manifest.json": "beff2a7ad5d6957297ab909076c1888b50b15ccc7bb1c6fe6f52d001ef59398e",
|
|
5
|
+
"meta.json": "8fd79c487cc536d111b04449a792869becc8a6b14c17a19dc8fc958701057f6a",
|
|
6
|
+
"types/index.d.ts": "f560fbbf162c4f485b97046d56bfc0ab33771405d5adac51d45d171be7d98f0b",
|
|
7
|
+
"rules/no-secret-literals.ts": "56477155256fa55696168df5ad781defdaaeb6623ae79dbf8f753f6a713a0092",
|
|
8
|
+
"rules/valid-cron-schedule.ts": "3a6a898b7a096999485e97909ba889bd164e1779dcd92dffaef1d0ade5aa0512",
|
|
9
|
+
"rules/valid-region.ts": "271deb69fe0a151341db34b26e232523a40bb32c47f9901b190fd1ebd9cc4e75",
|
|
10
|
+
"rules/ren010-native-runtime-requires-commands.ts": "70274840a5ed7921f59998333a21a10ad361e3dc7568d97e01d6c24e84da6f00",
|
|
11
|
+
"rules/ren011-service-requires-source.ts": "ba1886079d76079a2abcb18835b7411d4b009678f9faa8c5112c8226da27955a",
|
|
12
|
+
"rules/ren012-free-plan-cannot-scale.ts": "f88ad2e233cf06b5637d06a16fb7dd7bdba5e42523241639d51c227352df2e35",
|
|
13
|
+
"rules/render-helpers.ts": "4e54c71d3f2205480afa72c731ef61641d848cd2e366058423008ed087ec1cac",
|
|
14
|
+
"skills/chant-render.md": "1a6743636165d86851cf102686a0c8ac3601c1d322dc97eff0ff64bd8e494abd",
|
|
15
|
+
"skills/chant-render-patterns.md": "3a7e395bcd478c8253ae2f45b0a09d3b45d08075a49781aa07e8bb7f0ac7ef8d"
|
|
16
|
+
},
|
|
17
|
+
"composite": "a5e2a90e2e42700752c2d8a436c381d7d64e9340373bc6368d4ce28427436605"
|
|
18
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The render lexicon's chant audit catalog — metadata for the REN post-synth
|
|
3
|
+
* checks, contributed via `renderPlugin.auditCatalog()`.
|
|
4
|
+
*
|
|
5
|
+
* All entries carry `yamlBased: false`: each check reads the chant model
|
|
6
|
+
* (`ctx.entities`) rather than the emitted plan, because what they need — the
|
|
7
|
+
* runtime, the plan tier, whether a source was named — lives in the typed
|
|
8
|
+
* graph. So they fire on `chant build` and cannot fire on an audit of a
|
|
9
|
+
* standalone Render config.
|
|
10
|
+
*/
|
|
11
|
+
import type { RuleMeta } from "@intentius/chant/audit/catalog";
|
|
12
|
+
export declare const renderAuditCatalog: Record<string, RuleMeta>;
|
|
13
|
+
//# sourceMappingURL=audit-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-catalog.d.ts","sourceRoot":"","sources":["../../src/lint/audit-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAa/D,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAsBvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAKvE,eAAO,MAAM,eAAe,EAAE,cAAc,EAI3C,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REN010: A native-runtime service must say how to build and start.
|
|
3
|
+
*
|
|
4
|
+
* Render's native runtimes (node, python, ruby, go, rust, elixir) need a
|
|
5
|
+
* `buildCommand` and a `startCommand` in `envSpecificDetails`; without them the
|
|
6
|
+
* API rejects the create (or, on some paths, accepts it and the first deploy
|
|
7
|
+
* fails). `docker` reads a Dockerfile and `image` pulls a prebuilt image, so
|
|
8
|
+
* neither needs commands. Static sites have no runtime.
|
|
9
|
+
*/
|
|
10
|
+
import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
|
|
11
|
+
export declare const ren010: PostSynthCheck;
|
|
12
|
+
//# sourceMappingURL=ren010-native-runtime-requires-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ren010-native-runtime-requires-commands.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/ren010-native-runtime-requires-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,kCAAkC,CAAC;AAM9G,eAAO,MAAM,MAAM,EAAE,cA8BpB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REN011: A service needs a source — a repo or an image.
|
|
3
|
+
*
|
|
4
|
+
* Every Render service is either git-backed (`repo`, built on Render) or
|
|
5
|
+
* image-backed (`image.imagePath`, pulled from a registry). One that names
|
|
6
|
+
* neither has nothing to deploy and is rejected at create time; one that uses
|
|
7
|
+
* the `image` runtime without an `image` is the same mistake spelled
|
|
8
|
+
* differently. Static sites are always git-backed.
|
|
9
|
+
*/
|
|
10
|
+
import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
|
|
11
|
+
export declare const ren011: PostSynthCheck;
|
|
12
|
+
//# sourceMappingURL=ren011-service-requires-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ren011-service-requires-source.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/ren011-service-requires-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,kCAAkC,CAAC;AAG9G,eAAO,MAAM,MAAM,EAAE,cAoCpB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REN012: The free instance type cannot scale.
|
|
3
|
+
*
|
|
4
|
+
* Render's `free` plan runs a single instance and cannot autoscale; a
|
|
5
|
+
* `numInstances > 1` or an enabled `autoscaling` block on a free service is
|
|
6
|
+
* rejected at create/patch time. Persistent disks are also unavailable on
|
|
7
|
+
* free. Catch all three at synth time with a message that says which.
|
|
8
|
+
*/
|
|
9
|
+
import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
|
|
10
|
+
export declare const ren012: PostSynthCheck;
|
|
11
|
+
//# sourceMappingURL=ren012-free-plan-cannot-scale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ren012-free-plan-cannot-scale.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/ren012-free-plan-cannot-scale.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,kCAAkC,CAAC;AAG9G,eAAO,MAAM,MAAM,EAAE,cA8BpB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helpers for the render post-synth checks. Not a check itself, so the
|
|
3
|
+
* generated barrel skips it (the scanner only picks up exported PostSynthChecks).
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Read an entity or property's constructor props. Nested Declarables
|
|
7
|
+
* (WebServiceDetails, Image, ServiceDisk) stash their args under a
|
|
8
|
+
* non-enumerable `props`; a plain inline object carries them directly. Handle
|
|
9
|
+
* both so a check behaves the same whether the user authored
|
|
10
|
+
* `serviceDetails: { runtime }` or `serviceDetails: new WebServiceDetails({ runtime })`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function readProps(value: unknown): Record<string, unknown>;
|
|
13
|
+
/** The entityType of a declarable, or undefined. */
|
|
14
|
+
export declare function entityTypeOf(value: unknown): string | undefined;
|
|
15
|
+
/** True when the entity is one of the five service kinds. */
|
|
16
|
+
export declare function isService(value: unknown): boolean;
|
|
17
|
+
/** The short kind (`WebService`) from an entity type, for messages. */
|
|
18
|
+
export declare function kindOf(value: unknown): string;
|
|
19
|
+
//# sourceMappingURL=render-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-helpers.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/render-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOjE;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE/D;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEjD;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG7C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LintRule } from "@intentius/chant/lint/rule";
|
|
2
|
+
export { validRegionRule } from "./valid-region.js";
|
|
3
|
+
export { noSecretLiteralsRule } from "./no-secret-literals.js";
|
|
4
|
+
export { validCronScheduleRule, isValidCronSchedule } from "./valid-cron-schedule.js";
|
|
5
|
+
/** All lint rules provided by the render lexicon. */
|
|
6
|
+
export declare const rules: LintRule[];
|
|
7
|
+
//# 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;AAK3D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,qDAAqD;AACrD,eAAO,MAAM,KAAK,EAAE,QAAQ,EAAmE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { LintRule } from "@intentius/chant/lint/rule";
|
|
2
|
+
/**
|
|
3
|
+
* REN002: No secret literals in env vars
|
|
4
|
+
*
|
|
5
|
+
* Flags an `envVars` (or `secretFiles`) entry whose `key` looks like a
|
|
6
|
+
* credential and whose `value` is a plain string literal. Render can generate
|
|
7
|
+
* the value (`generateValue: true`), it can come from an EnvGroup or from
|
|
8
|
+
* another resource's attribute (`db.internalConnectionString`), or from the
|
|
9
|
+
* process environment at build time — anything but a literal in source that
|
|
10
|
+
* ends up in git and in the build output.
|
|
11
|
+
*/
|
|
12
|
+
export declare const noSecretLiteralsRule: LintRule;
|
|
13
|
+
//# sourceMappingURL=no-secret-literals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-secret-literals.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/no-secret-literals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,4BAA4B,CAAC;AAexF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,QA+ClC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { LintRule } from "@intentius/chant/lint/rule";
|
|
2
|
+
/** True for a standard five-field cron expression (Render accepts no seconds field or macros). */
|
|
3
|
+
export declare function isValidCronSchedule(s: string): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* REN003: Valid cron schedule
|
|
6
|
+
*
|
|
7
|
+
* A CronJob's `schedule` must be a standard five-field cron expression
|
|
8
|
+
* (`minute hour day-of-month month day-of-week`). Render rejects `@hourly`-style
|
|
9
|
+
* macros and six-field (seconds) expressions at create time; catch them at build.
|
|
10
|
+
*/
|
|
11
|
+
export declare const validCronScheduleRule: LintRule;
|
|
12
|
+
//# sourceMappingURL=valid-cron-schedule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valid-cron-schedule.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/valid-cron-schedule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,4BAA4B,CAAC;AAOxF,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,QA+BnC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { LintRule } from "@intentius/chant/lint/rule";
|
|
2
|
+
/**
|
|
3
|
+
* Render's regions, per the `region` enum in the Public API spec. The generated
|
|
4
|
+
* types already narrow `region` to this union, so a typo is a compile error in
|
|
5
|
+
* a typed project; this rule gives the same answer with a clearer message, and
|
|
6
|
+
* fires in contexts the type checker does not reach (a `.js` stack, a value
|
|
7
|
+
* that has been widened to `string`).
|
|
8
|
+
*/
|
|
9
|
+
export declare const KNOWN_REGIONS: Set<string>;
|
|
10
|
+
/**
|
|
11
|
+
* REN001: Valid Render region
|
|
12
|
+
*
|
|
13
|
+
* A service, datastore, or Key Value `region` must be a Render region.
|
|
14
|
+
*/
|
|
15
|
+
export declare const validRegionRule: LintRule;
|
|
16
|
+
//# sourceMappingURL=valid-region.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valid-region.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/valid-region.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,4BAA4B,CAAC;AAGxF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,aAA4E,CAAC;AAEvG;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,QA+B7B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CompletionContext, CompletionItem } from "@intentius/chant/lsp/types";
|
|
2
|
+
/**
|
|
3
|
+
* Provide render completions based on context — the resource classes
|
|
4
|
+
* (WebService, Postgres, EnvGroup, ...) and their property entities, from the
|
|
5
|
+
* generated registry.
|
|
6
|
+
*/
|
|
7
|
+
export declare function completions(ctx: CompletionContext): CompletionItem[];
|
|
8
|
+
//# sourceMappingURL=completions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/lsp/completions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAapF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc,EAAE,CAEpE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../../src/lsp/hover.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAc1E;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAE9D"}
|
package/dist/meta.json
ADDED
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Autoscaling": {
|
|
3
|
+
"resourceType": "Render::Services::Autoscaling",
|
|
4
|
+
"kind": "property",
|
|
5
|
+
"lexicon": "render",
|
|
6
|
+
"constraints": {
|
|
7
|
+
"enabled": {
|
|
8
|
+
"default": false
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"AutoscalingCriteria": {
|
|
13
|
+
"resourceType": "Render::Services::AutoscalingCriteria",
|
|
14
|
+
"kind": "property",
|
|
15
|
+
"lexicon": "render"
|
|
16
|
+
},
|
|
17
|
+
"AutoscalingCriterion": {
|
|
18
|
+
"resourceType": "Render::Services::AutoscalingCriterion",
|
|
19
|
+
"kind": "property",
|
|
20
|
+
"lexicon": "render",
|
|
21
|
+
"constraints": {
|
|
22
|
+
"enabled": {
|
|
23
|
+
"default": false
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"BackgroundWorker": {
|
|
28
|
+
"resourceType": "Render::Services::BackgroundWorker",
|
|
29
|
+
"kind": "resource",
|
|
30
|
+
"lexicon": "render"
|
|
31
|
+
},
|
|
32
|
+
"BackgroundWorkerDetails": {
|
|
33
|
+
"resourceType": "Render::Services::BackgroundWorkerDetails",
|
|
34
|
+
"kind": "property",
|
|
35
|
+
"lexicon": "render",
|
|
36
|
+
"constraints": {
|
|
37
|
+
"numInstances": {
|
|
38
|
+
"minimum": 1,
|
|
39
|
+
"default": 1
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"BuildFilter": {
|
|
44
|
+
"resourceType": "Render::Services::BuildFilter",
|
|
45
|
+
"kind": "property",
|
|
46
|
+
"lexicon": "render"
|
|
47
|
+
},
|
|
48
|
+
"CidrBlockAndDescription": {
|
|
49
|
+
"resourceType": "Render::Services::CidrBlockAndDescription",
|
|
50
|
+
"kind": "property",
|
|
51
|
+
"lexicon": "render"
|
|
52
|
+
},
|
|
53
|
+
"CronJob": {
|
|
54
|
+
"resourceType": "Render::Services::CronJob",
|
|
55
|
+
"kind": "resource",
|
|
56
|
+
"lexicon": "render"
|
|
57
|
+
},
|
|
58
|
+
"CronJobDetails": {
|
|
59
|
+
"resourceType": "Render::Services::CronJobDetails",
|
|
60
|
+
"kind": "property",
|
|
61
|
+
"lexicon": "render"
|
|
62
|
+
},
|
|
63
|
+
"CustomDomain": {
|
|
64
|
+
"resourceType": "Render::Services::CustomDomain",
|
|
65
|
+
"kind": "resource",
|
|
66
|
+
"lexicon": "render"
|
|
67
|
+
},
|
|
68
|
+
"Disk": {
|
|
69
|
+
"resourceType": "Render::Services::Disk",
|
|
70
|
+
"kind": "resource",
|
|
71
|
+
"lexicon": "render"
|
|
72
|
+
},
|
|
73
|
+
"DockerDetails": {
|
|
74
|
+
"resourceType": "Render::Services::DockerDetails",
|
|
75
|
+
"kind": "property",
|
|
76
|
+
"lexicon": "render"
|
|
77
|
+
},
|
|
78
|
+
"EnvGroup": {
|
|
79
|
+
"resourceType": "Render::Config::EnvGroup",
|
|
80
|
+
"kind": "resource",
|
|
81
|
+
"lexicon": "render"
|
|
82
|
+
},
|
|
83
|
+
"EnvVar": {
|
|
84
|
+
"resourceType": "Render::Services::EnvVar",
|
|
85
|
+
"kind": "property",
|
|
86
|
+
"lexicon": "render"
|
|
87
|
+
},
|
|
88
|
+
"Environment": {
|
|
89
|
+
"resourceType": "Render::Projects::Environment",
|
|
90
|
+
"kind": "resource",
|
|
91
|
+
"lexicon": "render"
|
|
92
|
+
},
|
|
93
|
+
"GeneratedEnvVar": {
|
|
94
|
+
"resourceType": "Render::Services::GeneratedEnvVar",
|
|
95
|
+
"kind": "property",
|
|
96
|
+
"lexicon": "render"
|
|
97
|
+
},
|
|
98
|
+
"Header": {
|
|
99
|
+
"resourceType": "Render::Services::Header",
|
|
100
|
+
"kind": "property",
|
|
101
|
+
"lexicon": "render"
|
|
102
|
+
},
|
|
103
|
+
"Image": {
|
|
104
|
+
"resourceType": "Render::Services::Image",
|
|
105
|
+
"kind": "property",
|
|
106
|
+
"lexicon": "render"
|
|
107
|
+
},
|
|
108
|
+
"KeyValue": {
|
|
109
|
+
"resourceType": "Render::Datastores::KeyValue",
|
|
110
|
+
"kind": "resource",
|
|
111
|
+
"lexicon": "render"
|
|
112
|
+
},
|
|
113
|
+
"MaintenanceMode": {
|
|
114
|
+
"resourceType": "Render::Services::MaintenanceMode",
|
|
115
|
+
"kind": "property",
|
|
116
|
+
"lexicon": "render"
|
|
117
|
+
},
|
|
118
|
+
"NativeEnvironmentDetails": {
|
|
119
|
+
"resourceType": "Render::Services::NativeEnvironmentDetails",
|
|
120
|
+
"kind": "property",
|
|
121
|
+
"lexicon": "render"
|
|
122
|
+
},
|
|
123
|
+
"Postgres": {
|
|
124
|
+
"resourceType": "Render::Datastores::Postgres",
|
|
125
|
+
"kind": "resource",
|
|
126
|
+
"lexicon": "render",
|
|
127
|
+
"constraints": {
|
|
128
|
+
"databaseName": {
|
|
129
|
+
"default": "randomly generated"
|
|
130
|
+
},
|
|
131
|
+
"databaseUser": {
|
|
132
|
+
"default": "randomly generated"
|
|
133
|
+
},
|
|
134
|
+
"enableHighAvailability": {
|
|
135
|
+
"default": false
|
|
136
|
+
},
|
|
137
|
+
"plan": {
|
|
138
|
+
"enum": [
|
|
139
|
+
"free",
|
|
140
|
+
"starter",
|
|
141
|
+
"standard",
|
|
142
|
+
"pro",
|
|
143
|
+
"pro_plus",
|
|
144
|
+
"custom",
|
|
145
|
+
"basic_256mb",
|
|
146
|
+
"basic_1gb",
|
|
147
|
+
"basic_4gb",
|
|
148
|
+
"pro_4gb",
|
|
149
|
+
"pro_8gb",
|
|
150
|
+
"pro_16gb",
|
|
151
|
+
"pro_32gb",
|
|
152
|
+
"pro_64gb",
|
|
153
|
+
"pro_128gb",
|
|
154
|
+
"pro_192gb",
|
|
155
|
+
"pro_256gb",
|
|
156
|
+
"pro_384gb",
|
|
157
|
+
"pro_512gb",
|
|
158
|
+
"accelerated_16gb",
|
|
159
|
+
"accelerated_32gb",
|
|
160
|
+
"accelerated_64gb",
|
|
161
|
+
"accelerated_128gb",
|
|
162
|
+
"accelerated_256gb",
|
|
163
|
+
"accelerated_384gb",
|
|
164
|
+
"accelerated_512gb",
|
|
165
|
+
"accelerated_768gb",
|
|
166
|
+
"accelerated_1024gb",
|
|
167
|
+
"0.1c-256mb",
|
|
168
|
+
"0.5c-1g",
|
|
169
|
+
"1c-2g",
|
|
170
|
+
"1c-4g",
|
|
171
|
+
"2c-4g",
|
|
172
|
+
"2c-8g",
|
|
173
|
+
"2c-16g",
|
|
174
|
+
"4c-16g",
|
|
175
|
+
"4c-32g",
|
|
176
|
+
"8c-32g",
|
|
177
|
+
"8c-64g",
|
|
178
|
+
"16c-64g",
|
|
179
|
+
"16c-128g",
|
|
180
|
+
"32c-128g",
|
|
181
|
+
"32c-256g",
|
|
182
|
+
"48c-192g",
|
|
183
|
+
"48c-384g",
|
|
184
|
+
"64c-256g",
|
|
185
|
+
"64c-512g",
|
|
186
|
+
"96c-384g",
|
|
187
|
+
"96c-768g",
|
|
188
|
+
"128c-512g",
|
|
189
|
+
"128c-1024g"
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
"enableDiskAutoscaling": {
|
|
193
|
+
"default": false
|
|
194
|
+
},
|
|
195
|
+
"connectionPool": {
|
|
196
|
+
"default": "none"
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"Previews": {
|
|
201
|
+
"resourceType": "Render::Services::Previews",
|
|
202
|
+
"kind": "property",
|
|
203
|
+
"lexicon": "render",
|
|
204
|
+
"constraints": {
|
|
205
|
+
"generation": {
|
|
206
|
+
"default": "off",
|
|
207
|
+
"enum": [
|
|
208
|
+
"off",
|
|
209
|
+
"manual",
|
|
210
|
+
"automatic"
|
|
211
|
+
]
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"PrivateService": {
|
|
216
|
+
"resourceType": "Render::Services::PrivateService",
|
|
217
|
+
"kind": "resource",
|
|
218
|
+
"lexicon": "render"
|
|
219
|
+
},
|
|
220
|
+
"PrivateServiceDetails": {
|
|
221
|
+
"resourceType": "Render::Services::PrivateServiceDetails",
|
|
222
|
+
"kind": "property",
|
|
223
|
+
"lexicon": "render",
|
|
224
|
+
"constraints": {
|
|
225
|
+
"numInstances": {
|
|
226
|
+
"minimum": 1,
|
|
227
|
+
"default": 1
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
"Project": {
|
|
232
|
+
"resourceType": "Render::Projects::Project",
|
|
233
|
+
"kind": "resource",
|
|
234
|
+
"lexicon": "render"
|
|
235
|
+
},
|
|
236
|
+
"ProjectEnvironment": {
|
|
237
|
+
"resourceType": "Render::Services::ProjectEnvironment",
|
|
238
|
+
"kind": "property",
|
|
239
|
+
"lexicon": "render"
|
|
240
|
+
},
|
|
241
|
+
"ReadReplica": {
|
|
242
|
+
"resourceType": "Render::Services::ReadReplica",
|
|
243
|
+
"kind": "property",
|
|
244
|
+
"lexicon": "render"
|
|
245
|
+
},
|
|
246
|
+
"RegistryCredential": {
|
|
247
|
+
"resourceType": "Render::Config::RegistryCredential",
|
|
248
|
+
"kind": "resource",
|
|
249
|
+
"lexicon": "render"
|
|
250
|
+
},
|
|
251
|
+
"Route": {
|
|
252
|
+
"resourceType": "Render::Services::Route",
|
|
253
|
+
"kind": "property",
|
|
254
|
+
"lexicon": "render"
|
|
255
|
+
},
|
|
256
|
+
"SecretFile": {
|
|
257
|
+
"resourceType": "Render::Services::SecretFile",
|
|
258
|
+
"kind": "property",
|
|
259
|
+
"lexicon": "render"
|
|
260
|
+
},
|
|
261
|
+
"ServiceDisk": {
|
|
262
|
+
"resourceType": "Render::Services::ServiceDisk",
|
|
263
|
+
"kind": "property",
|
|
264
|
+
"lexicon": "render",
|
|
265
|
+
"constraints": {
|
|
266
|
+
"sizeGB": {
|
|
267
|
+
"minimum": 1
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
"StaticSite": {
|
|
272
|
+
"resourceType": "Render::Services::StaticSite",
|
|
273
|
+
"kind": "resource",
|
|
274
|
+
"lexicon": "render"
|
|
275
|
+
},
|
|
276
|
+
"StaticSiteDetails": {
|
|
277
|
+
"resourceType": "Render::Services::StaticSiteDetails",
|
|
278
|
+
"kind": "property",
|
|
279
|
+
"lexicon": "render"
|
|
280
|
+
},
|
|
281
|
+
"WebService": {
|
|
282
|
+
"resourceType": "Render::Services::WebService",
|
|
283
|
+
"kind": "resource",
|
|
284
|
+
"lexicon": "render"
|
|
285
|
+
},
|
|
286
|
+
"WebServiceDetails": {
|
|
287
|
+
"resourceType": "Render::Services::WebServiceDetails",
|
|
288
|
+
"kind": "property",
|
|
289
|
+
"lexicon": "render",
|
|
290
|
+
"constraints": {
|
|
291
|
+
"numInstances": {
|
|
292
|
+
"minimum": 1
|
|
293
|
+
},
|
|
294
|
+
"plan": {
|
|
295
|
+
"default": "0.5c-512mb"
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
"Webhook": {
|
|
300
|
+
"resourceType": "Render::Config::Webhook",
|
|
301
|
+
"kind": "resource",
|
|
302
|
+
"lexicon": "render"
|
|
303
|
+
}
|
|
304
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
okf_version: '0.2'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Resource types
|
|
6
|
+
|
|
7
|
+
* [BackgroundWorker](/types/BackgroundWorker.md) - Render::Services::BackgroundWorker
|
|
8
|
+
* [CronJob](/types/CronJob.md) - Render::Services::CronJob
|
|
9
|
+
* [CustomDomain](/types/CustomDomain.md) - Render::Services::CustomDomain
|
|
10
|
+
* [Disk](/types/Disk.md) - Render::Services::Disk
|
|
11
|
+
* [EnvGroup](/types/EnvGroup.md) - Render::Config::EnvGroup
|
|
12
|
+
* [Environment](/types/Environment.md) - Render::Projects::Environment
|
|
13
|
+
* [KeyValue](/types/KeyValue.md) - Render::Datastores::KeyValue
|
|
14
|
+
* [Postgres](/types/Postgres.md) - Render::Datastores::Postgres
|
|
15
|
+
* [PrivateService](/types/PrivateService.md) - Render::Services::PrivateService
|
|
16
|
+
* [Project](/types/Project.md) - Render::Projects::Project
|
|
17
|
+
* [RegistryCredential](/types/RegistryCredential.md) - Render::Config::RegistryCredential
|
|
18
|
+
* [StaticSite](/types/StaticSite.md) - Render::Services::StaticSite
|
|
19
|
+
* [Webhook](/types/Webhook.md) - Render::Config::Webhook
|
|
20
|
+
* [WebService](/types/WebService.md) - Render::Services::WebService
|
|
21
|
+
|
|
22
|
+
# Rules
|
|
23
|
+
|
|
24
|
+
* [REN001](/rules/REN001.md) - Valid Render region
|
|
25
|
+
* [REN002](/rules/REN002.md) - No secret literals in env vars
|
|
26
|
+
* [REN003](/rules/REN003.md) - Valid cron schedule
|
|
27
|
+
* [REN010](/rules/REN010.md) - A native-runtime service must set envSpecificDetails.buildCommand and startCommand
|
|
28
|
+
* [REN011](/rules/REN011.md) - A service must have a repo (git-backed) or an image (image-backed)
|
|
29
|
+
* [REN012](/rules/REN012.md) - A free-plan service cannot set numInstances > 1, autoscaling, or a disk
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: lint-rule
|
|
3
|
+
title: REN002
|
|
4
|
+
description: No secret literals in env vars
|
|
5
|
+
id: REN002
|
|
6
|
+
severity: warning
|
|
7
|
+
category: security
|
|
8
|
+
lexicon: render
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/render/rules/
|
|
10
|
+
---
|
|
11
|
+
No secret literals in env vars
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [EnvGroup](/types/EnvGroup.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: lint-rule
|
|
3
|
+
title: REN003
|
|
4
|
+
description: Valid cron schedule
|
|
5
|
+
id: REN003
|
|
6
|
+
severity: error
|
|
7
|
+
category: correctness
|
|
8
|
+
lexicon: render
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/render/rules/
|
|
10
|
+
---
|
|
11
|
+
Valid cron schedule
|
|
12
|
+
|
|
13
|
+
## Applies to
|
|
14
|
+
|
|
15
|
+
- [CronJob](/types/CronJob.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: REN010
|
|
4
|
+
description: A native-runtime service must set envSpecificDetails.buildCommand and startCommand
|
|
5
|
+
id: REN010
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: render
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/render/rules/
|
|
10
|
+
---
|
|
11
|
+
A native-runtime service must set envSpecificDetails.buildCommand and startCommand
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: REN011
|
|
4
|
+
description: A service must have a repo (git-backed) or an image (image-backed)
|
|
5
|
+
id: REN011
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: render
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/render/rules/
|
|
10
|
+
---
|
|
11
|
+
A service must have a repo (git-backed) or an image (image-backed)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: post-synth-check
|
|
3
|
+
title: REN012
|
|
4
|
+
description: A free-plan service cannot set numInstances > 1, autoscaling, or a disk
|
|
5
|
+
id: REN012
|
|
6
|
+
severity: error
|
|
7
|
+
category: post-synth
|
|
8
|
+
lexicon: render
|
|
9
|
+
docs: https://intentius.io/chant/lexicons/render/rules/
|
|
10
|
+
---
|
|
11
|
+
A free-plan service cannot set numInstances > 1, autoscaling, or a disk
|