@intentius/chant-lexicon-gcp 0.124.31 → 0.124.33

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 (612) hide show
  1. package/dist/actions/index.js +45 -0
  2. package/dist/api/read-client.js +105 -0
  3. package/dist/codegen/docs-cli.js +6 -0
  4. package/dist/codegen/docs.js +115 -0
  5. package/dist/codegen/generate-cli.js +17 -0
  6. package/dist/codegen/generate.js +218 -0
  7. package/dist/codegen/naming.js +164 -0
  8. package/dist/codegen/package.js +43 -0
  9. package/dist/composites/catalog.d.ts.map +1 -1
  10. package/dist/composites/catalog.js +1251 -0
  11. package/dist/composites/cloud-function.js +65 -0
  12. package/dist/composites/cloud-run-service.d.ts +7 -3
  13. package/dist/composites/cloud-run-service.d.ts.map +1 -1
  14. package/dist/composites/cloud-run-service.js +75 -0
  15. package/dist/composites/cloud-sql-instance.js +85 -0
  16. package/dist/composites/gcs-bucket.js +64 -0
  17. package/dist/composites/gke-cluster.js +113 -0
  18. package/dist/composites/gke-crdb-region.js +137 -0
  19. package/dist/composites/gpu-node-pool.js +74 -0
  20. package/dist/composites/index.js +15 -0
  21. package/dist/composites/landing-zone.js +89 -0
  22. package/dist/composites/managed-certificate.js +46 -0
  23. package/dist/composites/memorystore-redis.js +52 -0
  24. package/dist/composites/multi-region-vpc.js +108 -0
  25. package/dist/composites/private-service.js +50 -0
  26. package/dist/composites/pubsub-pipeline.js +63 -0
  27. package/dist/composites/secure-project.js +85 -0
  28. package/dist/composites/vpc-network.js +113 -0
  29. package/dist/coverage.js +28 -0
  30. package/dist/deep-observe-hooks.js +152 -0
  31. package/dist/deep-observe.js +273 -0
  32. package/dist/default-labels.js +67 -0
  33. package/dist/describe-resources.js +264 -0
  34. package/dist/detect.js +16 -0
  35. package/dist/export-resources.js +59 -0
  36. package/dist/generated/index.d.ts.map +1 -1
  37. package/dist/generated/index.js +1804 -0
  38. package/dist/generated/runtime.js +4 -0
  39. package/dist/governance.js +98 -0
  40. package/dist/health.d.ts +42 -0
  41. package/dist/health.d.ts.map +1 -0
  42. package/dist/health.js +87 -0
  43. package/dist/import/generator.js +68 -0
  44. package/dist/import/live-export.js +73 -0
  45. package/dist/import/parser.js +61 -0
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +38 -0
  49. package/dist/integrity.json +5 -5
  50. package/dist/lint/audit-catalog.js +38 -0
  51. package/dist/lint/audit-lineage.js +63 -0
  52. package/dist/lint/post-synth/gcp-helpers.js +91 -0
  53. package/dist/lint/post-synth/index.js +54 -0
  54. package/dist/lint/post-synth/schema-registry.d.ts.map +1 -1
  55. package/dist/lint/post-synth/schema-registry.js +69 -0
  56. package/dist/lint/post-synth/wgc101.js +47 -0
  57. package/dist/lint/post-synth/wgc102.js +29 -0
  58. package/dist/lint/post-synth/wgc103.js +37 -0
  59. package/dist/lint/post-synth/wgc104.js +34 -0
  60. package/dist/lint/post-synth/wgc105.js +39 -0
  61. package/dist/lint/post-synth/wgc106.js +30 -0
  62. package/dist/lint/post-synth/wgc107.js +33 -0
  63. package/dist/lint/post-synth/wgc108.js +34 -0
  64. package/dist/lint/post-synth/wgc109.js +33 -0
  65. package/dist/lint/post-synth/wgc110.js +32 -0
  66. package/dist/lint/post-synth/wgc111.js +47 -0
  67. package/dist/lint/post-synth/wgc112.js +46 -0
  68. package/dist/lint/post-synth/wgc113.js +35 -0
  69. package/dist/lint/post-synth/wgc201.js +30 -0
  70. package/dist/lint/post-synth/wgc202.js +33 -0
  71. package/dist/lint/post-synth/wgc203.js +35 -0
  72. package/dist/lint/post-synth/wgc204.js +33 -0
  73. package/dist/lint/post-synth/wgc301.js +28 -0
  74. package/dist/lint/post-synth/wgc302.js +28 -0
  75. package/dist/lint/post-synth/wgc303.js +29 -0
  76. package/dist/lint/post-synth/wgc401.js +50 -0
  77. package/dist/lint/post-synth/wgc402.js +46 -0
  78. package/dist/lint/post-synth/wgc403.js +74 -0
  79. package/dist/lint/post-synth/wgc501.js +63 -0
  80. package/dist/lint/post-synth/wgc502.js +37 -0
  81. package/dist/lint/post-synth/wgc503.js +49 -0
  82. package/dist/lint/rules/hardcoded-project.js +51 -0
  83. package/dist/lint/rules/hardcoded-region.js +51 -0
  84. package/dist/lint/rules/index.js +3 -0
  85. package/dist/lint/rules/public-iam.js +37 -0
  86. package/dist/lsp/completions.d.ts.map +1 -1
  87. package/dist/lsp/completions.js +15 -0
  88. package/dist/lsp/hover.d.ts.map +1 -1
  89. package/dist/lsp/hover.js +46 -0
  90. package/dist/manifest.json +1 -1
  91. package/dist/meta.json +1848 -481
  92. package/dist/okf/types/API.md +2 -0
  93. package/dist/okf/types/APIConfig.md +3 -0
  94. package/dist/okf/types/APIQuotaAdjusterSettings.md +2 -0
  95. package/dist/okf/types/APIQuotaPreference.md +2 -0
  96. package/dist/okf/types/AccessBoundaryPolicy.md +2 -0
  97. package/dist/okf/types/AccessLevel.md +2 -0
  98. package/dist/okf/types/AccessLevelCondition.md +1 -0
  99. package/dist/okf/types/AccessPolicy.md +4 -0
  100. package/dist/okf/types/AddonsConfig.md +1 -0
  101. package/dist/okf/types/AgentPool.md +2 -0
  102. package/dist/okf/types/AiplatformModel.md +2 -0
  103. package/dist/okf/types/AistreamsCluster.md +2 -0
  104. package/dist/okf/types/AlertPolicy.md +2 -0
  105. package/dist/okf/types/AlloydbBackup.md +9 -0
  106. package/dist/okf/types/AlloydbCluster.md +5 -0
  107. package/dist/okf/types/AlloydbInstance.md +10 -0
  108. package/dist/okf/types/AnalyticsAccount.md +2 -0
  109. package/dist/okf/types/AndroidApp.md +4 -0
  110. package/dist/okf/types/AnywhereCache.md +2 -0
  111. package/dist/okf/types/ApigatewayGateway.md +3 -0
  112. package/dist/okf/types/ApigeeEnvironment.md +5 -0
  113. package/dist/okf/types/ApigeeInstance.md +2 -0
  114. package/dist/okf/types/ApihubDeployment.md +2 -0
  115. package/dist/okf/types/ApikeysKey.md +2 -0
  116. package/dist/okf/types/AppConnection.md +1 -0
  117. package/dist/okf/types/AppConnector.md +2 -0
  118. package/dist/okf/types/AppGateway.md +3 -0
  119. package/dist/okf/types/AppProfile.md +3 -0
  120. package/dist/okf/types/Application.md +2 -0
  121. package/dist/okf/types/ArtifactRegistryRepository.md +4 -0
  122. package/dist/okf/types/Assignment.md +2 -0
  123. package/dist/okf/types/Attestor.md +2 -0
  124. package/dist/okf/types/AuthorizationPolicy.md +4 -0
  125. package/dist/okf/types/AuthorizedView.md +2 -0
  126. package/dist/okf/types/AutokeyConfig.md +2 -0
  127. package/dist/okf/types/Automation.md +2 -0
  128. package/dist/okf/types/Autoscaler.md +3 -0
  129. package/dist/okf/types/AutoscalingPolicy.md +2 -0
  130. package/dist/okf/types/BQJob.md +3 -0
  131. package/dist/okf/types/BackendBucket.md +3 -0
  132. package/dist/okf/types/BackendBucketSignedURLKey.md +1 -0
  133. package/dist/okf/types/BackendService.md +5 -0
  134. package/dist/okf/types/BackendServiceSignedURLKey.md +1 -0
  135. package/dist/okf/types/BackupPlanAssociation.md +2 -0
  136. package/dist/okf/types/BackupPolicy.md +2 -0
  137. package/dist/okf/types/BackupdrBackupPlan.md +2 -0
  138. package/dist/okf/types/BackupdrBackupVault.md +2 -0
  139. package/dist/okf/types/Batch.md +2 -0
  140. package/dist/okf/types/BatchJob.md +2 -0
  141. package/dist/okf/types/BatchTask.md +3 -0
  142. package/dist/okf/types/BigLakeCatalog.md +2 -0
  143. package/dist/okf/types/BigLakeDatabase.md +2 -0
  144. package/dist/okf/types/BigLakeTable.md +2 -0
  145. package/dist/okf/types/BigQueryDataPolicy.md +2 -0
  146. package/dist/okf/types/BigQueryDataset.md +6 -0
  147. package/dist/okf/types/BigQueryExport.md +2 -0
  148. package/dist/okf/types/BigQueryTable.md +11 -0
  149. package/dist/okf/types/BigqueryconnectionConnection.md +2 -0
  150. package/dist/okf/types/BigquerydatatransferConfig.md +2 -0
  151. package/dist/okf/types/BigqueryreservationReservation.md +2 -0
  152. package/dist/okf/types/BigtableInstance.md +1 -0
  153. package/dist/okf/types/BigtableTable.md +2 -0
  154. package/dist/okf/types/BillingAccount.md +2 -0
  155. package/dist/okf/types/BinaryauthorizationPolicy.md +3 -0
  156. package/dist/okf/types/Brand.md +2 -0
  157. package/dist/okf/types/BtBackup.md +2 -0
  158. package/dist/okf/types/BtCluster.md +2 -0
  159. package/dist/okf/types/Bucket.md +2 -0
  160. package/dist/okf/types/BucketAccessControl.md +3 -0
  161. package/dist/okf/types/Budget.md +2 -0
  162. package/dist/okf/types/CAPool.md +1 -0
  163. package/dist/okf/types/CapacityCommitment.md +5 -0
  164. package/dist/okf/types/CertificateAuthority.md +7 -0
  165. package/dist/okf/types/CertificateIssuanceConfig.md +2 -0
  166. package/dist/okf/types/CertificateMap.md +3 -0
  167. package/dist/okf/types/CertificateMapEntry.md +4 -0
  168. package/dist/okf/types/CertificateTemplate.md +3 -0
  169. package/dist/okf/types/CertificatemanagerCertificate.md +1 -0
  170. package/dist/okf/types/ClientConnectorService.md +2 -0
  171. package/dist/okf/types/ClientTLSPolicy.md +3 -0
  172. package/dist/okf/types/CloudBatchResourceAllowance.md +2 -0
  173. package/dist/okf/types/CloudFunction.md +4 -0
  174. package/dist/okf/types/CloudRunJob.md +13 -0
  175. package/dist/okf/types/CloudRunService.md +13 -0
  176. package/dist/okf/types/CloudbuildTrigger.md +4 -0
  177. package/dist/okf/types/ClouddmsPrivateConnection.md +2 -0
  178. package/dist/okf/types/CloudidentityGroup.md +5 -0
  179. package/dist/okf/types/CloudidentityMembership.md +6 -0
  180. package/dist/okf/types/CloudidsEndpoint.md +1 -0
  181. package/dist/okf/types/CloudschedulerJob.md +5 -0
  182. package/dist/okf/types/ComposerEnvironment.md +2 -0
  183. package/dist/okf/types/ComputeAddress.md +4 -0
  184. package/dist/okf/types/ComputeDisk.md +9 -0
  185. package/dist/okf/types/ComputeFirewallPolicy.md +7 -0
  186. package/dist/okf/types/ComputeHealthCheck.md +4 -0
  187. package/dist/okf/types/ComputeInstance.md +8 -0
  188. package/dist/okf/types/ComputeNetworkPeering.md +3 -0
  189. package/dist/okf/types/ComputeNodeGroup.md +3 -0
  190. package/dist/okf/types/ComputeReservation.md +6 -0
  191. package/dist/okf/types/ComputeRoute.md +3 -0
  192. package/dist/okf/types/ComputeSnapshot.md +7 -0
  193. package/dist/okf/types/ConfigcontrollerInstance.md +3 -0
  194. package/dist/okf/types/ConnectionProfile.md +2 -0
  195. package/dist/okf/types/ConnectivityTest.md +2 -0
  196. package/dist/okf/types/Connector.md +3 -0
  197. package/dist/okf/types/ConsentStore.md +1 -0
  198. package/dist/okf/types/ConsumerGroup.md +2 -0
  199. package/dist/okf/types/ConsumerQuotaOverride.md +2 -0
  200. package/dist/okf/types/Contact.md +2 -0
  201. package/dist/okf/types/ContainerattachedCluster.md +8 -0
  202. package/dist/okf/types/ConversionWorkspace.md +2 -0
  203. package/dist/okf/types/CryptoKeyVersion.md +5 -0
  204. package/dist/okf/types/CustomClass.md +2 -0
  205. package/dist/okf/types/CustomConstraint.md +2 -0
  206. package/dist/okf/types/CustomRole.md +3 -0
  207. package/dist/okf/types/CustomTargetType.md +2 -0
  208. package/dist/okf/types/DICOMStore.md +2 -0
  209. package/dist/okf/types/DNSAuthorization.md +2 -0
  210. package/dist/okf/types/DNSManagedZone.md +3 -0
  211. package/dist/okf/types/DNSRecordSet.md +1 -0
  212. package/dist/okf/types/Dashboard.md +2 -0
  213. package/dist/okf/types/DataExchange.md +2 -0
  214. package/dist/okf/types/DataLabelingJob.md +2 -0
  215. package/dist/okf/types/DataPolicy.md +2 -0
  216. package/dist/okf/types/DataStore.md +2 -0
  217. package/dist/okf/types/DataStoreTargetSite.md +2 -0
  218. package/dist/okf/types/Database.md +2 -0
  219. package/dist/okf/types/DatacatalogEntryGroup.md +2 -0
  220. package/dist/okf/types/DataflowJob.md +4 -0
  221. package/dist/okf/types/DataformRepository.md +2 -0
  222. package/dist/okf/types/DatafusionInstance.md +10 -0
  223. package/dist/okf/types/DataplexEntryGroup.md +2 -0
  224. package/dist/okf/types/DataplexTask.md +2 -0
  225. package/dist/okf/types/DataprocCluster.md +2 -0
  226. package/dist/okf/types/DataprocJob.md +2 -0
  227. package/dist/okf/types/DataprocNodeGroup.md +2 -0
  228. package/dist/okf/types/DataprocSession.md +2 -0
  229. package/dist/okf/types/DatasetAccess.md +2 -0
  230. package/dist/okf/types/DatastoreIndex.md +2 -0
  231. package/dist/okf/types/DatastreamPrivateConnection.md +2 -0
  232. package/dist/okf/types/DatastreamRoute.md +2 -0
  233. package/dist/okf/types/DefaultObjectAccessControl.md +5 -0
  234. package/dist/okf/types/DefaultSupportedIDPConfig.md +2 -0
  235. package/dist/okf/types/DeidentifyTemplate.md +4 -0
  236. package/dist/okf/types/DeliveryPipeline.md +2 -0
  237. package/dist/okf/types/DenyPolicy.md +2 -0
  238. package/dist/okf/types/DeployPolicy.md +2 -0
  239. package/dist/okf/types/DeploymentResourcePool.md +2 -0
  240. package/dist/okf/types/DeploymentmanagerDeployment.md +4 -0
  241. package/dist/okf/types/Device.md +8 -0
  242. package/dist/okf/types/DeviceRegistry.md +1 -0
  243. package/dist/okf/types/DevicestreamingSession.md +2 -0
  244. package/dist/okf/types/DialogflowAgent.md +2 -0
  245. package/dist/okf/types/DialogflowEntityType.md +2 -0
  246. package/dist/okf/types/DialogflowIntent.md +3 -0
  247. package/dist/okf/types/DialogflowcxAgent.md +3 -0
  248. package/dist/okf/types/DialogflowcxEntityType.md +2 -0
  249. package/dist/okf/types/DialogflowcxIntent.md +2 -0
  250. package/dist/okf/types/DiscoveredService.md +2 -0
  251. package/dist/okf/types/DiscoveredWorkload.md +2 -0
  252. package/dist/okf/types/DiskResourcePolicyAttachment.md +1 -0
  253. package/dist/okf/types/DnsPolicy.md +1 -0
  254. package/dist/okf/types/Document.md +2 -0
  255. package/dist/okf/types/DomainMapping.md +2 -0
  256. package/dist/okf/types/EdgeCacheKeyset.md +1 -0
  257. package/dist/okf/types/EdgeCacheOrigin.md +1 -0
  258. package/dist/okf/types/EdgeCacheService.md +1 -0
  259. package/dist/okf/types/EdgecontainerCluster.md +9 -0
  260. package/dist/okf/types/EdgecontainerNodePool.md +4 -0
  261. package/dist/okf/types/EdgenetworkNetwork.md +4 -0
  262. package/dist/okf/types/EndpointAttachment.md +2 -0
  263. package/dist/okf/types/EndpointPolicy.md +3 -0
  264. package/dist/okf/types/Engine.md +2 -0
  265. package/dist/okf/types/Enrollment.md +2 -0
  266. package/dist/okf/types/Entitlement.md +2 -0
  267. package/dist/okf/types/Entry.md +2 -0
  268. package/dist/okf/types/EntryType.md +2 -0
  269. package/dist/okf/types/Envgroup.md +2 -0
  270. package/dist/okf/types/EnvgroupAttachment.md +2 -0
  271. package/dist/okf/types/EventarcChannel.md +2 -0
  272. package/dist/okf/types/EventarcTrigger.md +5 -0
  273. package/dist/okf/types/ExampleStore.md +2 -0
  274. package/dist/okf/types/ExternalAccessRule.md +2 -0
  275. package/dist/okf/types/ExternalAddress.md +2 -0
  276. package/dist/okf/types/ExternalVPNGateway.md +3 -0
  277. package/dist/okf/types/FHIRStore.md +2 -0
  278. package/dist/okf/types/Feature.md +4 -0
  279. package/dist/okf/types/FeatureMembership.md +1 -0
  280. package/dist/okf/types/Featurestore.md +2 -0
  281. package/dist/okf/types/FeaturestoreEntityType.md +5 -0
  282. package/dist/okf/types/FeaturestoreEntityTypeFeature.md +5 -0
  283. package/dist/okf/types/Federation.md +2 -0
  284. package/dist/okf/types/Feed.md +2 -0
  285. package/dist/okf/types/Field.md +2 -0
  286. package/dist/okf/types/FilestoreBackup.md +7 -0
  287. package/dist/okf/types/FilestoreInstance.md +5 -0
  288. package/dist/okf/types/FilestoreSnapshot.md +4 -0
  289. package/dist/okf/types/FirebaseProject.md +3 -0
  290. package/dist/okf/types/FirebasedatabaseInstance.md +4 -0
  291. package/dist/okf/types/FirebasehostingChannel.md +2 -0
  292. package/dist/okf/types/FirestoreBackupSchedule.md +2 -0
  293. package/dist/okf/types/FirestoreIndex.md +2 -0
  294. package/dist/okf/types/Firewall.md +3 -0
  295. package/dist/okf/types/FirewallPolicyAssociation.md +2 -0
  296. package/dist/okf/types/FirewallPolicyRule.md +4 -0
  297. package/dist/okf/types/FirewallRule.md +1 -0
  298. package/dist/okf/types/FlexTemplateJob.md +4 -0
  299. package/dist/okf/types/FlexibleAppVersion.md +2 -0
  300. package/dist/okf/types/Flow.md +2 -0
  301. package/dist/okf/types/FolderFeed.md +3 -0
  302. package/dist/okf/types/ForwardingRule.md +10 -0
  303. package/dist/okf/types/Fulfillment.md +2 -0
  304. package/dist/okf/types/Function.md +5 -0
  305. package/dist/okf/types/FutureReservation.md +2 -0
  306. package/dist/okf/types/GCPServiceAccount.md +5 -0
  307. package/dist/okf/types/GCPUserAccessBinding.md +2 -0
  308. package/dist/okf/types/GCPolicy.md +1 -0
  309. package/dist/okf/types/GKECluster.md +8 -0
  310. package/dist/okf/types/GRPCRoute.md +4 -0
  311. package/dist/okf/types/GcsFolder.md +2 -0
  312. package/dist/okf/types/GkebackupBackup.md +2 -0
  313. package/dist/okf/types/GkebackupBackupPlan.md +2 -0
  314. package/dist/okf/types/GkehubMembership.md +6 -0
  315. package/dist/okf/types/GkehubNamespace.md +2 -0
  316. package/dist/okf/types/GlobalNetworkEndpoint.md +1 -0
  317. package/dist/okf/types/GlobalNetworkEndpointGroup.md +2 -0
  318. package/dist/okf/types/GoogleChannelConfig.md +2 -0
  319. package/dist/okf/types/GuestPolicy.md +4 -0
  320. package/dist/okf/types/HL7V2Store.md +2 -0
  321. package/dist/okf/types/HMACKey.md +5 -0
  322. package/dist/okf/types/HTTPHealthCheck.md +3 -0
  323. package/dist/okf/types/HTTPRoute.md +4 -0
  324. package/dist/okf/types/HTTPSHealthCheck.md +3 -0
  325. package/dist/okf/types/HealthcareDataset.md +2 -0
  326. package/dist/okf/types/Hub.md +5 -0
  327. package/dist/okf/types/IAMAuditConfig.md +1 -0
  328. package/dist/okf/types/IAMPolicy.md +1 -0
  329. package/dist/okf/types/IAMPolicyMember.md +1 -0
  330. package/dist/okf/types/IdentityAwareProxyClient.md +2 -0
  331. package/dist/okf/types/IdentityplatformConfig.md +2 -0
  332. package/dist/okf/types/Image.md +5 -0
  333. package/dist/okf/types/ImportJob.md +2 -0
  334. package/dist/okf/types/InboundSAMLConfig.md +1 -0
  335. package/dist/okf/types/IndexEndpoint.md +6 -0
  336. package/dist/okf/types/InspectTemplate.md +4 -0
  337. package/dist/okf/types/InstanceAttachment.md +2 -0
  338. package/dist/okf/types/InstanceConfig.md +2 -0
  339. package/dist/okf/types/InstanceEndpoint.md +1 -0
  340. package/dist/okf/types/InstanceGroup.md +3 -0
  341. package/dist/okf/types/InstanceGroupManager.md +8 -0
  342. package/dist/okf/types/InstanceGroupNamedPort.md +1 -0
  343. package/dist/okf/types/InstanceTemplate.md +5 -0
  344. package/dist/okf/types/InterceptDeployment.md +2 -0
  345. package/dist/okf/types/InterceptEndpointGroup.md +2 -0
  346. package/dist/okf/types/Interconnect.md +2 -0
  347. package/dist/okf/types/InterconnectAttachment.md +9 -0
  348. package/dist/okf/types/InternalRange.md +2 -0
  349. package/dist/okf/types/JobTrigger.md +5 -0
  350. package/dist/okf/types/KMSCryptoKey.md +2 -0
  351. package/dist/okf/types/KMSKeyRing.md +2 -0
  352. package/dist/okf/types/KeyHandle.md +2 -0
  353. package/dist/okf/types/KeyRingImportJob.md +4 -0
  354. package/dist/okf/types/LBRouteExtension.md +2 -0
  355. package/dist/okf/types/Lake.md +2 -0
  356. package/dist/okf/types/Lien.md +3 -0
  357. package/dist/okf/types/Link.md +2 -0
  358. package/dist/okf/types/Listing.md +2 -0
  359. package/dist/okf/types/LocationTagBinding.md +3 -0
  360. package/dist/okf/types/LogBucket.md +4 -0
  361. package/dist/okf/types/LogExclusion.md +3 -0
  362. package/dist/okf/types/LogMetric.md +3 -0
  363. package/dist/okf/types/LogSink.md +2 -0
  364. package/dist/okf/types/LogView.md +3 -0
  365. package/dist/okf/types/LogicalView.md +3 -0
  366. package/dist/okf/types/Machine.md +2 -0
  367. package/dist/okf/types/MachineImage.md +2 -0
  368. package/dist/okf/types/ManagedFolder.md +2 -0
  369. package/dist/okf/types/ManagedSSLCertificate.md +1 -0
  370. package/dist/okf/types/ManagedkafkaCluster.md +2 -0
  371. package/dist/okf/types/ManagedkafkaTopic.md +2 -0
  372. package/dist/okf/types/ManagementServer.md +2 -0
  373. package/dist/okf/types/MaterializedView.md +3 -0
  374. package/dist/okf/types/MembershipBinding.md +2 -0
  375. package/dist/okf/types/MemcacheInstance.md +4 -0
  376. package/dist/okf/types/MemorystoreInstance.md +2 -0
  377. package/dist/okf/types/Mesh.md +4 -0
  378. package/dist/okf/types/MetadataStore.md +2 -0
  379. package/dist/okf/types/MetastoreBackup.md +2 -0
  380. package/dist/okf/types/MetastoreService.md +2 -0
  381. package/dist/okf/types/MetricDescriptor.md +2 -0
  382. package/dist/okf/types/MigrationJob.md +2 -0
  383. package/dist/okf/types/MlengineModel.md +1 -0
  384. package/dist/okf/types/MonGroup.md +1 -0
  385. package/dist/okf/types/MonService.md +1 -0
  386. package/dist/okf/types/MonitoredProject.md +2 -0
  387. package/dist/okf/types/MuteConfig.md +2 -0
  388. package/dist/okf/types/NATAddress.md +3 -0
  389. package/dist/okf/types/NetappBackupVault.md +2 -0
  390. package/dist/okf/types/NetworkAttachment.md +2 -0
  391. package/dist/okf/types/NetworkEdgeSecurityService.md +2 -0
  392. package/dist/okf/types/NetworkEndpoint.md +1 -0
  393. package/dist/okf/types/NetworkEndpointGroup.md +3 -0
  394. package/dist/okf/types/NetworkFirewallPolicy.md +7 -0
  395. package/dist/okf/types/NetworkFirewallPolicyAssociation.md +2 -0
  396. package/dist/okf/types/NetworkFirewallPolicyRule.md +3 -0
  397. package/dist/okf/types/NetworkPeeringRoutesConfig.md +1 -0
  398. package/dist/okf/types/NetworkPolicy.md +2 -0
  399. package/dist/okf/types/NetworkservicesGateway.md +4 -0
  400. package/dist/okf/types/Node.md +2 -0
  401. package/dist/okf/types/NodePool.md +2 -0
  402. package/dist/okf/types/NodeTemplate.md +4 -0
  403. package/dist/okf/types/Note.md +3 -0
  404. package/dist/okf/types/NotebookInstance.md +2 -0
  405. package/dist/okf/types/NotebooksEnvironment.md +2 -0
  406. package/dist/okf/types/Notification.md +3 -0
  407. package/dist/okf/types/NotificationChannel.md +3 -0
  408. package/dist/okf/types/NotificationConfig.md +3 -0
  409. package/dist/okf/types/OAuthIDPConfig.md +1 -0
  410. package/dist/okf/types/OSPolicyAssignment.md +9 -0
  411. package/dist/okf/types/Occurrence.md +5 -0
  412. package/dist/okf/types/Organization.md +10 -0
  413. package/dist/okf/types/OrganizationFeed.md +2 -0
  414. package/dist/okf/types/OrganizationSecurityPolicy.md +3 -0
  415. package/dist/okf/types/OrganizationSecurityPolicyAssociation.md +2 -0
  416. package/dist/okf/types/OrganizationSecurityPolicyRule.md +1 -0
  417. package/dist/okf/types/OrgpolicyPolicy.md +2 -0
  418. package/dist/okf/types/PacketMirroring.md +4 -0
  419. package/dist/okf/types/Page.md +2 -0
  420. package/dist/okf/types/Parameter.md +2 -0
  421. package/dist/okf/types/ParameterVersion.md +2 -0
  422. package/dist/okf/types/PartialPolicy.md +1 -0
  423. package/dist/okf/types/PatchDeployment.md +5 -0
  424. package/dist/okf/types/PeeredDNSDomain.md +2 -0
  425. package/dist/okf/types/PerInstanceConfig.md +1 -0
  426. package/dist/okf/types/PhraseSet.md +2 -0
  427. package/dist/okf/types/PlatformPolicy.md +2 -0
  428. package/dist/okf/types/PolicyTag.md +3 -0
  429. package/dist/okf/types/PrivateCloud.md +2 -0
  430. package/dist/okf/types/PrivatecaCertificate.md +5 -0
  431. package/dist/okf/types/Processor.md +2 -0
  432. package/dist/okf/types/ProcessorDefaultVersion.md +1 -0
  433. package/dist/okf/types/ProcessorVersion.md +2 -0
  434. package/dist/okf/types/ProjectDefaultConfig.md +2 -0
  435. package/dist/okf/types/ProjectFeed.md +2 -0
  436. package/dist/okf/types/ProjectMetadata.md +1 -0
  437. package/dist/okf/types/PubSubSnapshot.md +2 -0
  438. package/dist/okf/types/PubSubSubscription.md +1 -0
  439. package/dist/okf/types/PubSubTopic.md +1 -0
  440. package/dist/okf/types/PubsubliteReservation.md +1 -0
  441. package/dist/okf/types/PubsubliteTopic.md +1 -0
  442. package/dist/okf/types/RecaptchaenterpriseFirewallPolicy.md +2 -0
  443. package/dist/okf/types/RecaptchaenterpriseKey.md +2 -0
  444. package/dist/okf/types/Recognizer.md +2 -0
  445. package/dist/okf/types/RedisCluster.md +2 -0
  446. package/dist/okf/types/RedisInstance.md +8 -0
  447. package/dist/okf/types/RegionAutoscaler.md +3 -0
  448. package/dist/okf/types/RegionDiskResourcePolicyAttachment.md +1 -0
  449. package/dist/okf/types/RegionNetworkEndpointGroup.md +2 -0
  450. package/dist/okf/types/RegionPerInstanceConfig.md +1 -0
  451. package/dist/okf/types/RegionSSLPolicy.md +4 -0
  452. package/dist/okf/types/RegionalEndpoint.md +2 -0
  453. package/dist/okf/types/ResourceBundle.md +2 -0
  454. package/dist/okf/types/ResourcePolicy.md +3 -0
  455. package/dist/okf/types/ResourcemanagerFolder.md +5 -0
  456. package/dist/okf/types/ResourcemanagerPolicy.md +3 -0
  457. package/dist/okf/types/ResourcemanagerProject.md +2 -0
  458. package/dist/okf/types/ResponsePolicy.md +1 -0
  459. package/dist/okf/types/ResponsePolicyRule.md +1 -0
  460. package/dist/okf/types/Restore.md +2 -0
  461. package/dist/okf/types/RestorePlan.md +2 -0
  462. package/dist/okf/types/Router.md +3 -0
  463. package/dist/okf/types/RouterInterface.md +1 -0
  464. package/dist/okf/types/RouterNAT.md +1 -0
  465. package/dist/okf/types/RouterPeer.md +2 -0
  466. package/dist/okf/types/Routine.md +3 -0
  467. package/dist/okf/types/Runtime.md +2 -0
  468. package/dist/okf/types/RuntimeTemplate.md +2 -0
  469. package/dist/okf/types/SQLDatabase.md +2 -0
  470. package/dist/okf/types/SQLInstance.md +10 -0
  471. package/dist/okf/types/SQLUser.md +1 -0
  472. package/dist/okf/types/SSHPublicKey.md +2 -0
  473. package/dist/okf/types/SSLCert.md +8 -0
  474. package/dist/okf/types/SSLCertificate.md +5 -0
  475. package/dist/okf/types/SSLPolicy.md +4 -0
  476. package/dist/okf/types/SavedQuery.md +2 -0
  477. package/dist/okf/types/Schema.md +1 -0
  478. package/dist/okf/types/Scope.md +5 -0
  479. package/dist/okf/types/ScopeRBACRoleBinding.md +2 -0
  480. package/dist/okf/types/SecretCiphertext.md +2 -0
  481. package/dist/okf/types/SecretManagerSecret.md +3 -0
  482. package/dist/okf/types/SecretManagerSecretVersion.md +6 -0
  483. package/dist/okf/types/SecuresourcemanagerInstance.md +2 -0
  484. package/dist/okf/types/SecuresourcemanagerRepository.md +2 -0
  485. package/dist/okf/types/SecurityPolicy.md +3 -0
  486. package/dist/okf/types/ServerTLSPolicy.md +3 -0
  487. package/dist/okf/types/ServiceAccountKey.md +6 -0
  488. package/dist/okf/types/ServiceAttachment.md +5 -0
  489. package/dist/okf/types/ServiceBinding.md +2 -0
  490. package/dist/okf/types/ServiceConnectionPolicy.md +2 -0
  491. package/dist/okf/types/ServiceIdentity.md +2 -0
  492. package/dist/okf/types/ServiceLevelObjective.md +4 -0
  493. package/dist/okf/types/ServicePerimeter.md +4 -0
  494. package/dist/okf/types/ServicePerimeterResource.md +1 -0
  495. package/dist/okf/types/ServiceProjectAttachment.md +2 -0
  496. package/dist/okf/types/ServiceSplitTraffic.md +1 -0
  497. package/dist/okf/types/ServicedirectoryEndpoint.md +2 -0
  498. package/dist/okf/types/ServicedirectoryNamespace.md +2 -0
  499. package/dist/okf/types/ServicedirectoryService.md +2 -0
  500. package/dist/okf/types/ServicenetworkingConnection.md +2 -0
  501. package/dist/okf/types/ServiceusageService.md +1 -0
  502. package/dist/okf/types/Settings.md +2 -0
  503. package/dist/okf/types/SharedVPCHostProject.md +1 -0
  504. package/dist/okf/types/SharedVPCServiceProject.md +1 -0
  505. package/dist/okf/types/Site.md +3 -0
  506. package/dist/okf/types/Source.md +2 -0
  507. package/dist/okf/types/SourcerepoRepository.md +3 -0
  508. package/dist/okf/types/SpannerBackupSchedule.md +2 -0
  509. package/dist/okf/types/SpannerDatabase.md +2 -0
  510. package/dist/okf/types/SpannerInstance.md +3 -0
  511. package/dist/okf/types/Spoke.md +5 -0
  512. package/dist/okf/types/StandardAppVersion.md +2 -0
  513. package/dist/okf/types/StorageBucket.md +3 -0
  514. package/dist/okf/types/StoragetransferJob.md +5 -0
  515. package/dist/okf/types/StoredInfoType.md +1 -0
  516. package/dist/okf/types/Stream.md +3 -0
  517. package/dist/okf/types/Subnet.md +5 -0
  518. package/dist/okf/types/Subnetwork.md +8 -0
  519. package/dist/okf/types/Subscription.md +1 -0
  520. package/dist/okf/types/SyncAuthorization.md +2 -0
  521. package/dist/okf/types/TCPRoute.md +4 -0
  522. package/dist/okf/types/TLSRoute.md +4 -0
  523. package/dist/okf/types/Tag.md +2 -0
  524. package/dist/okf/types/TagBinding.md +3 -0
  525. package/dist/okf/types/TagKey.md +6 -0
  526. package/dist/okf/types/TagTemplate.md +2 -0
  527. package/dist/okf/types/TagValue.md +6 -0
  528. package/dist/okf/types/Target.md +2 -0
  529. package/dist/okf/types/TargetGRPCProxy.md +5 -0
  530. package/dist/okf/types/TargetHTTPProxy.md +4 -0
  531. package/dist/okf/types/TargetHTTPSProxy.md +5 -0
  532. package/dist/okf/types/TargetInstance.md +3 -0
  533. package/dist/okf/types/TargetPool.md +2 -0
  534. package/dist/okf/types/TargetSSLProxy.md +4 -0
  535. package/dist/okf/types/TargetTCPProxy.md +5 -0
  536. package/dist/okf/types/TargetVPNGateway.md +4 -0
  537. package/dist/okf/types/TasksQueue.md +2 -0
  538. package/dist/okf/types/Taxonomy.md +3 -0
  539. package/dist/okf/types/Tenant.md +1 -0
  540. package/dist/okf/types/TenantDefaultSupportedIDPConfig.md +2 -0
  541. package/dist/okf/types/TenantInboundSAMLConfig.md +1 -0
  542. package/dist/okf/types/TenantOAuthIDPConfig.md +1 -0
  543. package/dist/okf/types/Tensorboard.md +6 -0
  544. package/dist/okf/types/URLMap.md +5 -0
  545. package/dist/okf/types/UptimeCheckConfig.md +1 -0
  546. package/dist/okf/types/User.md +2 -0
  547. package/dist/okf/types/VPCNetwork.md +3 -0
  548. package/dist/okf/types/VPNGateway.md +2 -0
  549. package/dist/okf/types/VPNTunnel.md +7 -0
  550. package/dist/okf/types/VertexaiDataset.md +1 -0
  551. package/dist/okf/types/VertexaiEndpoint.md +1 -0
  552. package/dist/okf/types/VertexaiIndex.md +1 -0
  553. package/dist/okf/types/VirtualMachine.md +2 -0
  554. package/dist/okf/types/VmwareengineNetwork.md +2 -0
  555. package/dist/okf/types/VmwareengineNetworkPeering.md +2 -0
  556. package/dist/okf/types/VpnConnection.md +3 -0
  557. package/dist/okf/types/WasmPlugin.md +2 -0
  558. package/dist/okf/types/WebApp.md +3 -0
  559. package/dist/okf/types/Webhook.md +3 -0
  560. package/dist/okf/types/WorkerPool.md +2 -0
  561. package/dist/okf/types/Workflow.md +2 -0
  562. package/dist/okf/types/WorkflowTemplate.md +4 -0
  563. package/dist/okf/types/WorkflowsExecution.md +2 -0
  564. package/dist/okf/types/WorkforcePool.md +3 -0
  565. package/dist/okf/types/WorkforcePoolProvider.md +2 -0
  566. package/dist/okf/types/Workload.md +2 -0
  567. package/dist/okf/types/WorkloadIdentityPool.md +2 -0
  568. package/dist/okf/types/WorkloadIdentityPoolProvider.md +2 -0
  569. package/dist/okf/types/Workstation.md +2 -0
  570. package/dist/okf/types/WorkstationCluster.md +2 -0
  571. package/dist/okf/types/WorkstationConfig.md +2 -0
  572. package/dist/okf/types/Zone.md +2 -0
  573. package/dist/op/activities/floci-gcp.js +49 -0
  574. package/dist/op/activities/gcp-apply.js +618 -0
  575. package/dist/op/activities/index.js +10 -0
  576. package/dist/op/builders.js +50 -0
  577. package/dist/ownership.js +38 -0
  578. package/dist/package-cli.js +20 -0
  579. package/dist/plugin.d.ts.map +1 -1
  580. package/dist/plugin.js +377 -0
  581. package/dist/pseudo.js +15 -0
  582. package/dist/rules/schema-registry.ts +2 -1
  583. package/dist/serializer.d.ts.map +1 -1
  584. package/dist/serializer.js +247 -0
  585. package/dist/spec/fetch.js +107 -0
  586. package/dist/spec/parse.d.ts +1 -1
  587. package/dist/spec/parse.js +339 -0
  588. package/dist/types/index.d.ts +1367 -0
  589. package/dist/validate-cli.js +11 -0
  590. package/dist/validate.js +24 -0
  591. package/dist/variables.js +15 -0
  592. package/package.json +8 -8
  593. package/src/attributes.test.ts +16 -0
  594. package/src/codegen/generate.ts +8 -3
  595. package/src/codegen/package.ts +2 -2
  596. package/src/composites/catalog.ts +7 -1
  597. package/src/composites/cloud-run-service.ts +12 -5
  598. package/src/composites/composites.test.ts +17 -0
  599. package/src/generated/index.d.ts +1367 -0
  600. package/src/generated/index.ts +487 -487
  601. package/src/generated/lexicon-gcp.json +1848 -481
  602. package/src/health.test.ts +59 -0
  603. package/src/health.ts +123 -0
  604. package/src/index.ts +3 -0
  605. package/src/lint/post-synth/schema-registry.ts +2 -1
  606. package/src/lsp/completions.ts +2 -1
  607. package/src/lsp/hover.ts +2 -1
  608. package/src/plugin.ts +8 -0
  609. package/src/serializer-outputs.test.ts +26 -0
  610. package/src/serializer.ts +21 -3
  611. package/src/spec/parse.test.ts +42 -2
  612. package/src/spec/parse.ts +17 -1
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Landing-zone bootstrap composites — the GCP slice.
3
+ *
4
+ * Fixed-shape resources for greenfield creation of the recommended
5
+ * governance foundation through a Config Connector management stack. The
6
+ * evaluability rules (EVL002/004) require composites to declare a fixed set
7
+ * of resources, so these carry the foundation only; arbitrary folder/project
8
+ * trees are authored as config with `landingZoneConfig()` (../governance.ts)
9
+ * and reconciled by an external governance reconciler, and further folders/projects are
10
+ * declared as ordinary resources.
11
+ *
12
+ * The pieces compose:
13
+ * const lz = GovernanceFoundation({ orgId: "123456789012" });
14
+ * const lr = LocationRestriction({ orgId: "123456789012", locations: ["in:eu-locations"] });
15
+ * const ac = OrganizationAuditConfig({ orgId: "123456789012" });
16
+ * There is no OrganizationRoot analog — GCP organizations come from Cloud
17
+ * Identity / Workspace, not the resource API, so greenfield and brownfield
18
+ * both start from an existing org id.
19
+ */
20
+ import { Composite } from "@intentius/chant";
21
+ import { IAMAuditConfig, OrgpolicyPolicy, ResourcemanagerFolder } from "../generated/index.js";
22
+ import { AUDIT_ALL_SERVICES, DISABLE_SA_KEY_CREATION, SKIP_DEFAULT_NETWORK, resourceLocationRestriction, } from "../governance.js";
23
+ /** "organizations/123" and "123" are both accepted everywhere an org id appears. */
24
+ function orgNumber(orgId) {
25
+ return orgId.replace(/^organizations\//, "");
26
+ }
27
+ function labels(component) {
28
+ return {
29
+ "app.kubernetes.io/managed-by": "chant",
30
+ "app.kubernetes.io/component": component,
31
+ };
32
+ }
33
+ function orgPolicy(metaName, policy, orgId, namespace) {
34
+ return new OrgpolicyPolicy({
35
+ metadata: {
36
+ name: metaName,
37
+ ...(namespace && { namespace }),
38
+ labels: labels("org-policy"),
39
+ },
40
+ resourceID: policy.constraint,
41
+ organizationRef: { external: orgNumber(orgId) },
42
+ spec: { rules: policy.rules },
43
+ });
44
+ }
45
+ /**
46
+ * Security / Infrastructure / Sandbox / Workloads folders with
47
+ * `disable-sa-key-creation` and `skip-default-network` enforced at the
48
+ * organization root — the same baseline `landingZoneConfig()` declares.
49
+ */
50
+ export const GovernanceFoundation = Composite((props) => {
51
+ const { orgId, namespace } = props;
52
+ const folder = (metaName, displayName) => new ResourcemanagerFolder({
53
+ metadata: {
54
+ name: metaName,
55
+ ...(namespace && { namespace }),
56
+ labels: labels("folder"),
57
+ },
58
+ displayName,
59
+ organizationRef: { external: orgNumber(orgId) },
60
+ });
61
+ return {
62
+ folderSecurity: folder("security", "Security"),
63
+ folderInfrastructure: folder("infrastructure", "Infrastructure"),
64
+ folderSandbox: folder("sandbox", "Sandbox"),
65
+ folderWorkloads: folder("workloads", "Workloads"),
66
+ policyDisableSaKeyCreation: orgPolicy("disable-sa-key-creation", DISABLE_SA_KEY_CREATION, orgId, namespace),
67
+ policySkipDefaultNetwork: orgPolicy("skip-default-network", SKIP_DEFAULT_NETWORK, orgId, namespace),
68
+ };
69
+ }, "GovernanceFoundation");
70
+ export const LocationRestriction = Composite((props) => {
71
+ const policyResourceLocations = orgPolicy("resource-location-restriction", resourceLocationRestriction(props.locations), props.orgId, props.namespace);
72
+ return { policyResourceLocations };
73
+ }, "LocationRestriction");
74
+ export const OrganizationAuditConfig = Composite((props) => {
75
+ const auditConfig = new IAMAuditConfig({
76
+ metadata: {
77
+ name: "organization-audit",
78
+ ...(props.namespace && { namespace: props.namespace }),
79
+ labels: labels("audit"),
80
+ },
81
+ resourceRef: {
82
+ kind: "Organization",
83
+ external: `organizations/${orgNumber(props.orgId)}`,
84
+ },
85
+ service: props.service ?? AUDIT_ALL_SERVICES.service,
86
+ auditLogConfigs: (props.logTypes ?? [...AUDIT_ALL_SERVICES.logTypes]).map((logType) => ({ logType })),
87
+ });
88
+ return { auditConfig };
89
+ }, "OrganizationAuditConfig");
@@ -0,0 +1,46 @@
1
+ /**
2
+ * ManagedCertificate composite — ManagedSslCertificate + optional TargetHttpsProxy + UrlMap.
3
+ */
4
+ import { Composite, mergeDefaults } from "@intentius/chant";
5
+ import { ManagedSSLCertificate, TargetHTTPSProxy, URLMap } from "../generated/index.js";
6
+ export const ManagedCertificate = Composite((props) => {
7
+ const { name, domains, createProxy = false, backendServiceName, labels: extraLabels = {}, namespace, defaults: defs, } = props;
8
+ const commonLabels = {
9
+ "app.kubernetes.io/name": name,
10
+ "app.kubernetes.io/managed-by": "chant",
11
+ ...extraLabels,
12
+ };
13
+ const certificate = new ManagedSSLCertificate(mergeDefaults({
14
+ metadata: {
15
+ name,
16
+ ...(namespace && { namespace }),
17
+ labels: { ...commonLabels, "app.kubernetes.io/component": "certificate" },
18
+ },
19
+ managed: {
20
+ domains,
21
+ },
22
+ }, defs?.certificate));
23
+ const result = { certificate };
24
+ if (createProxy && backendServiceName) {
25
+ result.urlMap = new URLMap(mergeDefaults({
26
+ metadata: {
27
+ name: `${name}-url-map`,
28
+ ...(namespace && { namespace }),
29
+ labels: { ...commonLabels, "app.kubernetes.io/component": "url-map" },
30
+ },
31
+ defaultService: {
32
+ backendServiceRef: { name: backendServiceName },
33
+ },
34
+ }, defs?.urlMap));
35
+ result.targetHttpsProxy = new TargetHTTPSProxy(mergeDefaults({
36
+ metadata: {
37
+ name: `${name}-proxy`,
38
+ ...(namespace && { namespace }),
39
+ labels: { ...commonLabels, "app.kubernetes.io/component": "proxy" },
40
+ },
41
+ urlMapRef: { name: `${name}-url-map` },
42
+ sslCertificates: [{ name }],
43
+ }, defs?.targetHttpsProxy));
44
+ }
45
+ return result;
46
+ }, "ManagedCertificate");
@@ -0,0 +1,52 @@
1
+ /**
2
+ * MemorystoreRedis composite — RedisInstance with purpose-driven defaults.
3
+ */
4
+ import { Composite, mergeDefaults } from "@intentius/chant";
5
+ import { RedisInstance } from "../generated/index.js";
6
+ /**
7
+ * Create a MemorystoreRedis composite.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { MemorystoreRedis } from "@intentius/chant-lexicon-gcp";
12
+ *
13
+ * const { instance } = MemorystoreRedis({
14
+ * name: "my-app-persistent",
15
+ * purpose: "persistent",
16
+ * tier: "STANDARD_HA",
17
+ * memorySizeGb: 5,
18
+ * region: "us-central1",
19
+ * networkRef: "my-vpc",
20
+ * });
21
+ * ```
22
+ */
23
+ export const MemorystoreRedis = Composite((props) => {
24
+ const { name, purpose, tier, memorySizeGb, region, networkRef, redisVersion = "REDIS_7_0", authEnabled = true, namespace, labels: extraLabels = {}, defaults: defs, } = props;
25
+ const maxmemoryPolicy = purpose === "persistent" ? "noeviction" : "allkeys-lru";
26
+ const commonLabels = {
27
+ "app.kubernetes.io/name": name,
28
+ "app.kubernetes.io/managed-by": "chant",
29
+ ...extraLabels,
30
+ };
31
+ const instance = new RedisInstance(mergeDefaults({
32
+ metadata: {
33
+ name,
34
+ ...(namespace && { namespace }),
35
+ labels: { ...commonLabels, "app.kubernetes.io/component": "cache" },
36
+ },
37
+ region,
38
+ tier,
39
+ memorySizeGb,
40
+ authEnabled,
41
+ redisVersion,
42
+ connectMode: "PRIVATE_SERVICE_ACCESS",
43
+ authorizedNetworkRef: { name: networkRef },
44
+ // TLS disabled: GitLab's redis-rb client requires either no TLS or a custom CA cert
45
+ // injected via REDIS_SSL_CA_FILE. AUTH (authEnabled: true) provides access control.
46
+ transitEncryptionMode: "DISABLED",
47
+ redisConfigs: {
48
+ "maxmemory-policy": maxmemoryPolicy,
49
+ },
50
+ }, defs?.instance));
51
+ return { instance };
52
+ }, "MemorystoreRedis");
@@ -0,0 +1,108 @@
1
+ /**
2
+ * MultiRegionVpc composite — VPC + 2 subnets per region + Router + RouterNAT per region + Firewall.
3
+ *
4
+ * Collapses the boilerplate of a multi-region GKE networking stack into a single call.
5
+ * Each region gets node and pod subnets, a Cloud Router, and a Cloud NAT gateway.
6
+ * A single allow-internal firewall rule covers all region CIDRs.
7
+ */
8
+ import { Composite } from "@intentius/chant";
9
+ import { VPCNetwork, Subnetwork, Router, RouterNAT, Firewall } from "../generated/index.js";
10
+ /**
11
+ * Create a MultiRegionVpc composite — one VPC with subnets, Cloud NAT, and an
12
+ * allow-internal firewall for every region in the array.
13
+ *
14
+ * The composite eliminates the per-region Router/NAT boilerplate that arises when
15
+ * `VpcNetwork` only handles a single NAT region and the rest must be wired manually.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * import { MultiRegionVpc } from "@intentius/chant-lexicon-gcp";
20
+ *
21
+ * export const network = MultiRegionVpc({
22
+ * name: "crdb-multi-region",
23
+ * regions: [
24
+ * { region: "us-east4", regionAlias: "east", nodeSubnetCidr: "10.1.0.0/20", podSubnetCidr: "10.1.16.0/20" },
25
+ * { region: "us-central1", regionAlias: "central", nodeSubnetCidr: "10.2.0.0/20", podSubnetCidr: "10.2.16.0/20" },
26
+ * { region: "us-west1", regionAlias: "west", nodeSubnetCidr: "10.3.0.0/20", podSubnetCidr: "10.3.16.0/20" },
27
+ * ],
28
+ * });
29
+ * ```
30
+ */
31
+ export const MultiRegionVpc = Composite((props) => {
32
+ const { name, regions, enableFlowLogs = false, labels: extraLabels = {}, namespace, } = props;
33
+ const commonLabels = {
34
+ "app.kubernetes.io/name": name,
35
+ "app.kubernetes.io/managed-by": "chant",
36
+ ...extraLabels,
37
+ };
38
+ const meta = (component, resourceName) => ({
39
+ metadata: {
40
+ name: resourceName ?? name,
41
+ ...(namespace && { namespace }),
42
+ labels: { ...commonLabels, "app.kubernetes.io/component": component },
43
+ },
44
+ });
45
+ const network = new VPCNetwork({
46
+ ...meta("network"),
47
+ autoCreateSubnetworks: false,
48
+ routingMode: "REGIONAL",
49
+ });
50
+ const subnetEntries = {};
51
+ const routerEntries = {};
52
+ const natEntries = {};
53
+ const allCidrs = [];
54
+ for (const r of regions) {
55
+ const alias = r.regionAlias ?? r.region;
56
+ allCidrs.push(r.nodeSubnetCidr, r.podSubnetCidr);
57
+ const flowConfig = enableFlowLogs
58
+ ? { logConfig: { enable: true, aggregationInterval: "INTERVAL_5_SEC", flowSampling: 0.5 } }
59
+ : {};
60
+ subnetEntries[`subnet_${alias}_nodes`] = new Subnetwork({
61
+ ...meta("subnet", `${name}-${alias}-nodes`),
62
+ networkRef: { name },
63
+ ipCidrRange: r.nodeSubnetCidr,
64
+ region: r.region,
65
+ privateIpGoogleAccess: true,
66
+ ...flowConfig,
67
+ });
68
+ subnetEntries[`subnet_${alias}_pods`] = new Subnetwork({
69
+ ...meta("subnet", `${name}-${alias}-pods`),
70
+ networkRef: { name },
71
+ ipCidrRange: r.podSubnetCidr,
72
+ region: r.region,
73
+ privateIpGoogleAccess: true,
74
+ ...flowConfig,
75
+ });
76
+ const routerName = `${name}-${alias}`;
77
+ routerEntries[`router_${alias}`] = new Router({
78
+ ...meta("router", routerName),
79
+ networkRef: { name },
80
+ region: r.region,
81
+ });
82
+ natEntries[`nat_${alias}`] = new RouterNAT({
83
+ ...meta("nat", routerName),
84
+ routerRef: { name: routerName },
85
+ region: r.region,
86
+ natIpAllocateOption: "AUTO_ONLY",
87
+ sourceSubnetworkIpRangesToNat: "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES",
88
+ });
89
+ }
90
+ // Allow all TCP/UDP/ICMP between every subnet CIDR in the VPC.
91
+ const firewallInternal = new Firewall({
92
+ ...meta("firewall", `${name}-allow-internal`),
93
+ networkRef: { name },
94
+ allow: [
95
+ { protocol: "tcp", ports: ["0-65535"] },
96
+ { protocol: "udp", ports: ["0-65535"] },
97
+ { protocol: "icmp" },
98
+ ],
99
+ sourceRanges: allCidrs,
100
+ });
101
+ return {
102
+ network,
103
+ ...subnetEntries,
104
+ ...routerEntries,
105
+ ...natEntries,
106
+ firewallInternal,
107
+ };
108
+ }, "MultiRegionVpc");
@@ -0,0 +1,50 @@
1
+ /**
2
+ * PrivateService composite — GlobalAddress + ServiceNetworkingConnection + optional DNS.
3
+ */
4
+ import { Composite, mergeDefaults } from "@intentius/chant";
5
+ import { ComputeAddress, ServicenetworkingConnection, DNSManagedZone, } from "../generated/index.js";
6
+ export const PrivateService = Composite((props) => {
7
+ const { name, networkName, prefixLength = 16, addressType = "INTERNAL", purpose = "VPC_PEERING", enableDns = false, dnsZoneName, dnsSuffix = "internal.", labels: extraLabels = {}, namespace, defaults: defs, } = props;
8
+ const commonLabels = {
9
+ "app.kubernetes.io/name": name,
10
+ "app.kubernetes.io/managed-by": "chant",
11
+ ...extraLabels,
12
+ };
13
+ const globalAddress = new ComputeAddress(mergeDefaults({
14
+ metadata: {
15
+ name: `${name}-address`,
16
+ ...(namespace && { namespace }),
17
+ labels: { ...commonLabels, "app.kubernetes.io/component": "address" },
18
+ },
19
+ addressType,
20
+ purpose,
21
+ prefixLength,
22
+ networkRef: { name: networkName },
23
+ }, defs?.globalAddress));
24
+ const serviceConnection = new ServicenetworkingConnection(mergeDefaults({
25
+ metadata: {
26
+ name: `${name}-connection`,
27
+ ...(namespace && { namespace }),
28
+ labels: { ...commonLabels, "app.kubernetes.io/component": "connection" },
29
+ },
30
+ networkRef: { name: networkName },
31
+ service: "servicenetworking.googleapis.com",
32
+ reservedPeeringRanges: [{ name: `${name}-address` }],
33
+ }, defs?.serviceConnection));
34
+ const result = { globalAddress, serviceConnection };
35
+ if (enableDns) {
36
+ result.dnsZone = new DNSManagedZone(mergeDefaults({
37
+ metadata: {
38
+ name: dnsZoneName ?? `${name}-dns`,
39
+ ...(namespace && { namespace }),
40
+ labels: { ...commonLabels, "app.kubernetes.io/component": "dns" },
41
+ },
42
+ dnsName: dnsSuffix,
43
+ visibility: "private",
44
+ privateVisibilityConfig: {
45
+ networks: [{ networkRef: { name: networkName } }],
46
+ },
47
+ }, defs?.dnsZone));
48
+ }
49
+ return result;
50
+ }, "PrivateService");
@@ -0,0 +1,63 @@
1
+ /**
2
+ * PubSubPipeline composite — Topic + Subscription + optional DLQ topic + subscriber IAM binding.
3
+ */
4
+ import { Composite, mergeDefaults } from "@intentius/chant";
5
+ import { PubSubTopic, PubSubSubscription, IAMPolicyMember } from "../generated/index.js";
6
+ export const PubSubPipeline = Composite((props) => {
7
+ const { name, ackDeadlineSeconds = 10, messageRetentionDuration = "604800s", enableDeadLetterQueue = false, maxDeliveryAttempts = 5, subscriberServiceAccount, labels: extraLabels = {}, namespace, defaults: defs, } = props;
8
+ const commonLabels = {
9
+ "app.kubernetes.io/name": name,
10
+ "app.kubernetes.io/managed-by": "chant",
11
+ ...extraLabels,
12
+ };
13
+ const topic = new PubSubTopic(mergeDefaults({
14
+ metadata: {
15
+ name: `${name}-topic`,
16
+ ...(namespace && { namespace }),
17
+ labels: { ...commonLabels, "app.kubernetes.io/component": "topic" },
18
+ },
19
+ }, defs?.topic));
20
+ const subscriptionProps = {
21
+ metadata: {
22
+ name: `${name}-subscription`,
23
+ ...(namespace && { namespace }),
24
+ labels: { ...commonLabels, "app.kubernetes.io/component": "subscription" },
25
+ },
26
+ topicRef: { name: `${name}-topic` },
27
+ ackDeadlineSeconds,
28
+ messageRetentionDuration,
29
+ };
30
+ const result = { topic };
31
+ if (enableDeadLetterQueue) {
32
+ result.deadLetterTopic = new PubSubTopic(mergeDefaults({
33
+ metadata: {
34
+ name: `${name}-dlq`,
35
+ ...(namespace && { namespace }),
36
+ labels: { ...commonLabels, "app.kubernetes.io/component": "dead-letter" },
37
+ },
38
+ }, defs?.deadLetterTopic));
39
+ subscriptionProps.deadLetterPolicy = {
40
+ deadLetterTopicRef: { name: `${name}-dlq` },
41
+ maxDeliveryAttempts,
42
+ };
43
+ }
44
+ const subscription = new PubSubSubscription(mergeDefaults(subscriptionProps, defs?.subscription));
45
+ result.subscription = subscription;
46
+ if (subscriberServiceAccount) {
47
+ result.subscriberIam = new IAMPolicyMember(mergeDefaults({
48
+ metadata: {
49
+ name: `${name}-subscriber`,
50
+ ...(namespace && { namespace }),
51
+ labels: { ...commonLabels, "app.kubernetes.io/component": "iam" },
52
+ },
53
+ member: `serviceAccount:${subscriberServiceAccount}`,
54
+ role: "roles/pubsub.subscriber",
55
+ resourceRef: {
56
+ apiVersion: "pubsub.cnrm.cloud.google.com/v1beta1",
57
+ kind: "PubSubSubscription",
58
+ name: `${name}-subscription`,
59
+ },
60
+ }, defs?.subscriberIam));
61
+ }
62
+ return result;
63
+ }, "PubSubPipeline");
@@ -0,0 +1,85 @@
1
+ /**
2
+ * SecureProject composite — Project + IAMAuditConfig + Service enablement + owner IAM + LoggingSink.
3
+ */
4
+ import { Composite, mergeDefaults } from "@intentius/chant";
5
+ import { ResourcemanagerProject, IAMAuditConfig, ServiceusageService, IAMPolicyMember, LogSink, } from "../generated/index.js";
6
+ export const SecureProject = Composite((props) => {
7
+ const { name, orgId, folderId, billingAccountRef, owner, enabledApis = [
8
+ "compute.googleapis.com",
9
+ "container.googleapis.com",
10
+ "iam.googleapis.com",
11
+ "logging.googleapis.com",
12
+ "monitoring.googleapis.com",
13
+ ], loggingSinkDestination, loggingSinkFilter = 'logName:"cloudaudit.googleapis.com"', labels: extraLabels = {}, namespace, defaults: defs, } = props;
14
+ const commonLabels = {
15
+ "app.kubernetes.io/name": name,
16
+ "app.kubernetes.io/managed-by": "chant",
17
+ ...extraLabels,
18
+ };
19
+ const project = new ResourcemanagerProject(mergeDefaults({
20
+ metadata: {
21
+ name,
22
+ ...(namespace && { namespace }),
23
+ labels: { ...commonLabels, "app.kubernetes.io/component": "project" },
24
+ },
25
+ ...(orgId && { organizationRef: { external: orgId } }),
26
+ ...(folderId && { folderRef: { external: folderId } }),
27
+ ...(billingAccountRef && { billingAccountRef: { external: billingAccountRef } }),
28
+ }, defs?.project));
29
+ const auditConfig = new IAMAuditConfig(mergeDefaults({
30
+ metadata: {
31
+ name: `${name}-audit`,
32
+ ...(namespace && { namespace }),
33
+ labels: { ...commonLabels, "app.kubernetes.io/component": "audit" },
34
+ },
35
+ service: "allServices",
36
+ auditLogConfigs: [
37
+ { logType: "ADMIN_READ" },
38
+ { logType: "DATA_READ" },
39
+ { logType: "DATA_WRITE" },
40
+ ],
41
+ }, defs?.auditConfig));
42
+ // Spread services into named members (service_compute, service_container, etc.)
43
+ // so the Composite validator accepts them as individual Declarables.
44
+ const serviceEntries = {};
45
+ for (const api of enabledApis) {
46
+ const key = `service_${api.split(".")[0]}`;
47
+ serviceEntries[key] = new ServiceusageService({
48
+ metadata: {
49
+ name: `${name}-${api.split(".")[0]}`,
50
+ ...(namespace && { namespace }),
51
+ labels: { ...commonLabels, "app.kubernetes.io/component": "service" },
52
+ },
53
+ resourceID: api,
54
+ });
55
+ }
56
+ const result = { project, auditConfig, ...serviceEntries };
57
+ if (owner) {
58
+ result.ownerIam = new IAMPolicyMember(mergeDefaults({
59
+ metadata: {
60
+ name: `${name}-owner`,
61
+ ...(namespace && { namespace }),
62
+ labels: { ...commonLabels, "app.kubernetes.io/component": "iam" },
63
+ },
64
+ member: owner,
65
+ role: "roles/owner",
66
+ resourceRef: {
67
+ apiVersion: "resourcemanager.cnrm.cloud.google.com/v1beta1",
68
+ kind: "Project",
69
+ name,
70
+ },
71
+ }, defs?.ownerIam));
72
+ }
73
+ if (loggingSinkDestination) {
74
+ result.loggingSink = new LogSink(mergeDefaults({
75
+ metadata: {
76
+ name: `${name}-audit-sink`,
77
+ ...(namespace && { namespace }),
78
+ labels: { ...commonLabels, "app.kubernetes.io/component": "logging" },
79
+ },
80
+ destination: loggingSinkDestination,
81
+ filter: loggingSinkFilter,
82
+ }, defs?.loggingSink));
83
+ }
84
+ return result;
85
+ }, "SecureProject");
@@ -0,0 +1,113 @@
1
+ /**
2
+ * VpcNetwork composite — ComputeNetwork + ComputeSubnetwork + ComputeFirewall + ComputeRouterNAT.
3
+ */
4
+ import { Composite, mergeDefaults } from "@intentius/chant";
5
+ import { VPCNetwork, Subnetwork, Firewall, Router, RouterNAT } from "../generated/index.js";
6
+ /**
7
+ * Create a VpcNetwork composite.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { VpcNetwork } from "@intentius/chant-lexicon-gcp";
12
+ *
13
+ * const { network, subnets, firewalls } = VpcNetwork({
14
+ * name: "my-vpc",
15
+ * subnets: [
16
+ * { name: "app", ipCidrRange: "10.0.0.0/24", region: "us-central1" },
17
+ * { name: "data", ipCidrRange: "10.0.1.0/24", region: "us-central1" },
18
+ * ],
19
+ * enableNat: true,
20
+ * natRegion: "us-central1",
21
+ * });
22
+ * ```
23
+ */
24
+ export const VpcNetwork = Composite((props) => {
25
+ const { name, autoCreateSubnetworks = false, subnets: subnetDefs = [], enableNat = false, natRegion, allowInternalTraffic = true, allowIapSsh = false, labels: extraLabels = {}, namespace, defaults: defs, } = props;
26
+ const commonLabels = {
27
+ "app.kubernetes.io/name": name,
28
+ "app.kubernetes.io/managed-by": "chant",
29
+ ...extraLabels,
30
+ };
31
+ const network = new VPCNetwork(mergeDefaults({
32
+ metadata: {
33
+ name,
34
+ ...(namespace && { namespace }),
35
+ labels: { ...commonLabels, "app.kubernetes.io/component": "network" },
36
+ },
37
+ autoCreateSubnetworks,
38
+ routingMode: "REGIONAL",
39
+ }, defs?.network));
40
+ // Spread subnets into named members (subnet_<name>) for Composite validation.
41
+ const subnetEntries = {};
42
+ for (const sub of subnetDefs) {
43
+ subnetEntries[`subnet_${sub.name}`] = new Subnetwork({
44
+ metadata: {
45
+ name: `${name}-${sub.name}`,
46
+ ...(namespace && { namespace }),
47
+ labels: { ...commonLabels, "app.kubernetes.io/component": "subnet" },
48
+ },
49
+ networkRef: { name },
50
+ ipCidrRange: sub.ipCidrRange,
51
+ region: sub.region,
52
+ privateIpGoogleAccess: sub.privateIpGoogleAccess ?? true,
53
+ ...(sub.secondaryIpRanges && sub.secondaryIpRanges.length > 0 && {
54
+ secondaryIpRange: sub.secondaryIpRanges,
55
+ }),
56
+ });
57
+ }
58
+ // Spread firewalls into named members for Composite validation.
59
+ const firewallEntries = {};
60
+ if (allowInternalTraffic) {
61
+ firewallEntries.firewallAllowInternal = new Firewall({
62
+ metadata: {
63
+ name: `${name}-allow-internal`,
64
+ ...(namespace && { namespace }),
65
+ labels: { ...commonLabels, "app.kubernetes.io/component": "firewall" },
66
+ },
67
+ networkRef: { name },
68
+ allow: [
69
+ { protocol: "tcp", ports: ["0-65535"] },
70
+ { protocol: "udp", ports: ["0-65535"] },
71
+ { protocol: "icmp" },
72
+ ],
73
+ sourceRanges: subnetDefs.map((s) => s.ipCidrRange),
74
+ });
75
+ }
76
+ if (allowIapSsh) {
77
+ firewallEntries.firewallAllowIapSsh = new Firewall({
78
+ metadata: {
79
+ name: `${name}-allow-iap-ssh`,
80
+ ...(namespace && { namespace }),
81
+ labels: { ...commonLabels, "app.kubernetes.io/component": "firewall" },
82
+ },
83
+ networkRef: { name },
84
+ allow: [{ protocol: "tcp", ports: ["22"] }],
85
+ sourceRanges: ["35.235.240.0/20"], // IAP IP range
86
+ });
87
+ }
88
+ const result = { network, ...subnetEntries, ...firewallEntries };
89
+ if (enableNat && natRegion) {
90
+ const routerName = `${name}-router`;
91
+ result.router = new Router(mergeDefaults({
92
+ metadata: {
93
+ name: routerName,
94
+ ...(namespace && { namespace }),
95
+ labels: { ...commonLabels, "app.kubernetes.io/component": "router" },
96
+ },
97
+ networkRef: { name },
98
+ region: natRegion,
99
+ }, defs?.router));
100
+ result.routerNat = new RouterNAT(mergeDefaults({
101
+ metadata: {
102
+ name: `${name}-nat`,
103
+ ...(namespace && { namespace }),
104
+ labels: { ...commonLabels, "app.kubernetes.io/component": "nat" },
105
+ },
106
+ routerRef: { name: routerName },
107
+ region: natRegion,
108
+ natIpAllocateOption: "AUTO_ONLY",
109
+ sourceSubnetworkIpRangesToNat: "ALL_SUBNETWORKS_ALL_IP_RANGES",
110
+ }, defs?.routerNat));
111
+ }
112
+ return result;
113
+ }, "VpcNetwork");
@@ -0,0 +1,28 @@
1
+ /**
2
+ * GCP lexicon coverage analysis.
3
+ */
4
+ import { computeCoverage, formatSummary, formatVerbose, checkThresholds, } from "@intentius/chant/codegen/coverage";
5
+ import { readFileSync } from "fs";
6
+ import { join, dirname } from "path";
7
+ import { fileURLToPath } from "url";
8
+ export { computeCoverage, overallPct, formatSummary, formatVerbose, checkThresholds, } from "@intentius/chant/codegen/coverage";
9
+ export async function analyzeGcpCoverage(opts) {
10
+ const pkgDir = dirname(dirname(fileURLToPath(import.meta.url)));
11
+ const lexiconPath = join(pkgDir, "src", "generated", "lexicon-gcp.json");
12
+ const content = readFileSync(lexiconPath, "utf-8");
13
+ const report = computeCoverage(content);
14
+ if (opts?.verbose) {
15
+ console.log(formatVerbose(report));
16
+ }
17
+ else {
18
+ console.log(formatSummary(report));
19
+ }
20
+ if (typeof opts?.minOverall === "number") {
21
+ const result = checkThresholds(report, { minOverallPct: opts.minOverall });
22
+ if (!result.ok) {
23
+ for (const v of result.violations)
24
+ console.error(` FAIL: ${v}`);
25
+ throw new Error("Coverage below threshold");
26
+ }
27
+ }
28
+ }