@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.
Files changed (168) hide show
  1. package/README.md +89 -0
  2. package/dist/catalog.d.ts +100 -0
  3. package/dist/catalog.d.ts.map +1 -0
  4. package/dist/codegen/docs-cli.d.ts +3 -0
  5. package/dist/codegen/docs-cli.d.ts.map +1 -0
  6. package/dist/codegen/docs.d.ts +21 -0
  7. package/dist/codegen/docs.d.ts.map +1 -0
  8. package/dist/codegen/generate-cli.d.ts +6 -0
  9. package/dist/codegen/generate-cli.d.ts.map +1 -0
  10. package/dist/codegen/generate-lexicon.d.ts +18 -0
  11. package/dist/codegen/generate-lexicon.d.ts.map +1 -0
  12. package/dist/codegen/generate-typescript.d.ts +12 -0
  13. package/dist/codegen/generate-typescript.d.ts.map +1 -0
  14. package/dist/codegen/generate.d.ts +15 -0
  15. package/dist/codegen/generate.d.ts.map +1 -0
  16. package/dist/codegen/naming.d.ts +14 -0
  17. package/dist/codegen/naming.d.ts.map +1 -0
  18. package/dist/codegen/package.d.ts +17 -0
  19. package/dist/codegen/package.d.ts.map +1 -0
  20. package/dist/composites/render-deploy.d.ts +88 -0
  21. package/dist/composites/render-deploy.d.ts.map +1 -0
  22. package/dist/coverage.d.ts +15 -0
  23. package/dist/coverage.d.ts.map +1 -0
  24. package/dist/describe-resources.d.ts +60 -0
  25. package/dist/describe-resources.d.ts.map +1 -0
  26. package/dist/detect.d.ts +12 -0
  27. package/dist/detect.d.ts.map +1 -0
  28. package/dist/generated/index.d.ts +38 -0
  29. package/dist/generated/index.d.ts.map +1 -0
  30. package/dist/generated/runtime.d.ts +5 -0
  31. package/dist/generated/runtime.d.ts.map +1 -0
  32. package/dist/index.d.ts +11 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/integrity.json +18 -0
  35. package/dist/lint/audit-catalog.d.ts +13 -0
  36. package/dist/lint/audit-catalog.d.ts.map +1 -0
  37. package/dist/lint/post-synth/index.d.ts +3 -0
  38. package/dist/lint/post-synth/index.d.ts.map +1 -0
  39. package/dist/lint/post-synth/ren010-native-runtime-requires-commands.d.ts +12 -0
  40. package/dist/lint/post-synth/ren010-native-runtime-requires-commands.d.ts.map +1 -0
  41. package/dist/lint/post-synth/ren011-service-requires-source.d.ts +12 -0
  42. package/dist/lint/post-synth/ren011-service-requires-source.d.ts.map +1 -0
  43. package/dist/lint/post-synth/ren012-free-plan-cannot-scale.d.ts +11 -0
  44. package/dist/lint/post-synth/ren012-free-plan-cannot-scale.d.ts.map +1 -0
  45. package/dist/lint/post-synth/render-helpers.d.ts +19 -0
  46. package/dist/lint/post-synth/render-helpers.d.ts.map +1 -0
  47. package/dist/lint/rules/index.d.ts +7 -0
  48. package/dist/lint/rules/index.d.ts.map +1 -0
  49. package/dist/lint/rules/no-secret-literals.d.ts +13 -0
  50. package/dist/lint/rules/no-secret-literals.d.ts.map +1 -0
  51. package/dist/lint/rules/valid-cron-schedule.d.ts +12 -0
  52. package/dist/lint/rules/valid-cron-schedule.d.ts.map +1 -0
  53. package/dist/lint/rules/valid-region.d.ts +16 -0
  54. package/dist/lint/rules/valid-region.d.ts.map +1 -0
  55. package/dist/lsp/completions.d.ts +8 -0
  56. package/dist/lsp/completions.d.ts.map +1 -0
  57. package/dist/lsp/hover.d.ts +6 -0
  58. package/dist/lsp/hover.d.ts.map +1 -0
  59. package/dist/manifest.json +6 -0
  60. package/dist/meta.json +304 -0
  61. package/dist/okf/index.md +29 -0
  62. package/dist/okf/rules/REN001.md +11 -0
  63. package/dist/okf/rules/REN002.md +15 -0
  64. package/dist/okf/rules/REN003.md +15 -0
  65. package/dist/okf/rules/REN010.md +11 -0
  66. package/dist/okf/rules/REN011.md +11 -0
  67. package/dist/okf/rules/REN012.md +11 -0
  68. package/dist/okf/types/BackgroundWorker.md +24 -0
  69. package/dist/okf/types/CronJob.md +28 -0
  70. package/dist/okf/types/CustomDomain.md +14 -0
  71. package/dist/okf/types/Disk.md +16 -0
  72. package/dist/okf/types/EnvGroup.md +22 -0
  73. package/dist/okf/types/Environment.md +17 -0
  74. package/dist/okf/types/KeyValue.md +20 -0
  75. package/dist/okf/types/Postgres.md +29 -0
  76. package/dist/okf/types/PrivateService.md +24 -0
  77. package/dist/okf/types/Project.md +15 -0
  78. package/dist/okf/types/RegistryCredential.md +17 -0
  79. package/dist/okf/types/StaticSite.md +24 -0
  80. package/dist/okf/types/WebService.md +24 -0
  81. package/dist/okf/types/Webhook.md +17 -0
  82. package/dist/op/activities/fake-render.d.ts +52 -0
  83. package/dist/op/activities/fake-render.d.ts.map +1 -0
  84. package/dist/op/activities/index.d.ts +10 -0
  85. package/dist/op/activities/index.d.ts.map +1 -0
  86. package/dist/op/activities/render-apply.d.ts +229 -0
  87. package/dist/op/activities/render-apply.d.ts.map +1 -0
  88. package/dist/ownership.d.ts +32 -0
  89. package/dist/ownership.d.ts.map +1 -0
  90. package/dist/package-cli.d.ts +3 -0
  91. package/dist/package-cli.d.ts.map +1 -0
  92. package/dist/plugin.d.ts +8 -0
  93. package/dist/plugin.d.ts.map +1 -0
  94. package/dist/pseudo.d.ts +21 -0
  95. package/dist/pseudo.d.ts.map +1 -0
  96. package/dist/rules/no-secret-literals.ts +73 -0
  97. package/dist/rules/ren010-native-runtime-requires-commands.ts +47 -0
  98. package/dist/rules/ren011-service-requires-source.ts +50 -0
  99. package/dist/rules/ren012-free-plan-cannot-scale.ts +43 -0
  100. package/dist/rules/render-helpers.ts +38 -0
  101. package/dist/rules/valid-cron-schedule.ts +51 -0
  102. package/dist/rules/valid-region.ts +49 -0
  103. package/dist/serializer.d.ts +99 -0
  104. package/dist/serializer.d.ts.map +1 -0
  105. package/dist/skills/chant-render-patterns.md +126 -0
  106. package/dist/skills/chant-render.md +112 -0
  107. package/dist/spec/fetch.d.ts +21 -0
  108. package/dist/spec/fetch.d.ts.map +1 -0
  109. package/dist/spec/parse.d.ts +120 -0
  110. package/dist/spec/parse.d.ts.map +1 -0
  111. package/dist/types/index.d.ts +573 -0
  112. package/dist/validate-cli.d.ts +3 -0
  113. package/dist/validate-cli.d.ts.map +1 -0
  114. package/dist/validate.d.ts +15 -0
  115. package/dist/validate.d.ts.map +1 -0
  116. package/package.json +73 -0
  117. package/src/catalog.ts +286 -0
  118. package/src/codegen/docs-cli.ts +7 -0
  119. package/src/codegen/docs.ts +120 -0
  120. package/src/codegen/generate-cli.ts +36 -0
  121. package/src/codegen/generate-lexicon.ts +52 -0
  122. package/src/codegen/generate-typescript.ts +70 -0
  123. package/src/codegen/generate.ts +106 -0
  124. package/src/codegen/naming.ts +55 -0
  125. package/src/codegen/package.ts +30 -0
  126. package/src/composites/render-deploy.ts +133 -0
  127. package/src/coverage.ts +49 -0
  128. package/src/describe-resources.test.ts +143 -0
  129. package/src/describe-resources.ts +366 -0
  130. package/src/detect.ts +29 -0
  131. package/src/generated/index.d.ts +573 -0
  132. package/src/generated/index.ts +43 -0
  133. package/src/generated/lexicon-render.json +304 -0
  134. package/src/generated/runtime.ts +4 -0
  135. package/src/index.ts +30 -0
  136. package/src/lint/audit-catalog.ts +47 -0
  137. package/src/lint/post-synth/index.ts +11 -0
  138. package/src/lint/post-synth/post-synth.test.ts +151 -0
  139. package/src/lint/post-synth/ren010-native-runtime-requires-commands.ts +47 -0
  140. package/src/lint/post-synth/ren011-service-requires-source.ts +50 -0
  141. package/src/lint/post-synth/ren012-free-plan-cannot-scale.ts +43 -0
  142. package/src/lint/post-synth/render-helpers.ts +38 -0
  143. package/src/lint/rules/index.ts +11 -0
  144. package/src/lint/rules/no-secret-literals.ts +73 -0
  145. package/src/lint/rules/rules.test.ts +73 -0
  146. package/src/lint/rules/valid-cron-schedule.ts +51 -0
  147. package/src/lint/rules/valid-region.ts +49 -0
  148. package/src/lsp/completions.test.ts +28 -0
  149. package/src/lsp/completions.ts +22 -0
  150. package/src/lsp/hover.test.ts +32 -0
  151. package/src/lsp/hover.ts +50 -0
  152. package/src/op/activities/fake-render.ts +275 -0
  153. package/src/op/activities/index.ts +51 -0
  154. package/src/op/activities/render-apply.test.ts +403 -0
  155. package/src/op/activities/render-apply.ts +1042 -0
  156. package/src/ownership.ts +44 -0
  157. package/src/package-cli.ts +23 -0
  158. package/src/plugin.test.ts +54 -0
  159. package/src/plugin.ts +258 -0
  160. package/src/pseudo.ts +26 -0
  161. package/src/serializer.test.ts +221 -0
  162. package/src/serializer.ts +286 -0
  163. package/src/skills/chant-render-patterns.md +126 -0
  164. package/src/skills/chant-render.md +112 -0
  165. package/src/spec/fetch.ts +33 -0
  166. package/src/spec/parse.ts +721 -0
  167. package/src/validate-cli.ts +5 -0
  168. 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,3 @@
1
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
2
+ export declare const postSynthChecks: PostSynthCheck[];
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,6 @@
1
+ import type { HoverContext, HoverInfo } from "@intentius/chant/lsp/types";
2
+ /**
3
+ * Provide hover information for render entity types.
4
+ */
5
+ export declare function hover(ctx: HoverContext): HoverInfo | undefined;
6
+ //# sourceMappingURL=hover.d.ts.map
@@ -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"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "render",
3
+ "version": "0.53.0",
4
+ "chantVersion": ">=0.1.0",
5
+ "namespace": "Render"
6
+ }
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,11 @@
1
+ ---
2
+ type: lint-rule
3
+ title: REN001
4
+ description: Valid Render region
5
+ id: REN001
6
+ severity: error
7
+ category: correctness
8
+ lexicon: render
9
+ docs: https://intentius.io/chant/lexicons/render/rules/
10
+ ---
11
+ Valid Render region
@@ -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