@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.
- package/dist/actions/index.js +45 -0
- package/dist/api/read-client.js +105 -0
- package/dist/codegen/docs-cli.js +6 -0
- package/dist/codegen/docs.js +115 -0
- package/dist/codegen/generate-cli.js +17 -0
- package/dist/codegen/generate.js +218 -0
- package/dist/codegen/naming.js +164 -0
- package/dist/codegen/package.js +43 -0
- package/dist/composites/catalog.d.ts.map +1 -1
- package/dist/composites/catalog.js +1251 -0
- package/dist/composites/cloud-function.js +65 -0
- package/dist/composites/cloud-run-service.d.ts +7 -3
- package/dist/composites/cloud-run-service.d.ts.map +1 -1
- package/dist/composites/cloud-run-service.js +75 -0
- package/dist/composites/cloud-sql-instance.js +85 -0
- package/dist/composites/gcs-bucket.js +64 -0
- package/dist/composites/gke-cluster.js +113 -0
- package/dist/composites/gke-crdb-region.js +137 -0
- package/dist/composites/gpu-node-pool.js +74 -0
- package/dist/composites/index.js +15 -0
- package/dist/composites/landing-zone.js +89 -0
- package/dist/composites/managed-certificate.js +46 -0
- package/dist/composites/memorystore-redis.js +52 -0
- package/dist/composites/multi-region-vpc.js +108 -0
- package/dist/composites/private-service.js +50 -0
- package/dist/composites/pubsub-pipeline.js +63 -0
- package/dist/composites/secure-project.js +85 -0
- package/dist/composites/vpc-network.js +113 -0
- package/dist/coverage.js +28 -0
- package/dist/deep-observe-hooks.js +152 -0
- package/dist/deep-observe.js +273 -0
- package/dist/default-labels.js +67 -0
- package/dist/describe-resources.js +264 -0
- package/dist/detect.js +16 -0
- package/dist/export-resources.js +59 -0
- package/dist/generated/index.d.ts.map +1 -1
- package/dist/generated/index.js +1804 -0
- package/dist/generated/runtime.js +4 -0
- package/dist/governance.js +98 -0
- package/dist/health.d.ts +42 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +87 -0
- package/dist/import/generator.js +68 -0
- package/dist/import/live-export.js +73 -0
- package/dist/import/parser.js +61 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -0
- package/dist/integrity.json +5 -5
- package/dist/lint/audit-catalog.js +38 -0
- package/dist/lint/audit-lineage.js +63 -0
- package/dist/lint/post-synth/gcp-helpers.js +91 -0
- package/dist/lint/post-synth/index.js +54 -0
- package/dist/lint/post-synth/schema-registry.d.ts.map +1 -1
- package/dist/lint/post-synth/schema-registry.js +69 -0
- package/dist/lint/post-synth/wgc101.js +47 -0
- package/dist/lint/post-synth/wgc102.js +29 -0
- package/dist/lint/post-synth/wgc103.js +37 -0
- package/dist/lint/post-synth/wgc104.js +34 -0
- package/dist/lint/post-synth/wgc105.js +39 -0
- package/dist/lint/post-synth/wgc106.js +30 -0
- package/dist/lint/post-synth/wgc107.js +33 -0
- package/dist/lint/post-synth/wgc108.js +34 -0
- package/dist/lint/post-synth/wgc109.js +33 -0
- package/dist/lint/post-synth/wgc110.js +32 -0
- package/dist/lint/post-synth/wgc111.js +47 -0
- package/dist/lint/post-synth/wgc112.js +46 -0
- package/dist/lint/post-synth/wgc113.js +35 -0
- package/dist/lint/post-synth/wgc201.js +30 -0
- package/dist/lint/post-synth/wgc202.js +33 -0
- package/dist/lint/post-synth/wgc203.js +35 -0
- package/dist/lint/post-synth/wgc204.js +33 -0
- package/dist/lint/post-synth/wgc301.js +28 -0
- package/dist/lint/post-synth/wgc302.js +28 -0
- package/dist/lint/post-synth/wgc303.js +29 -0
- package/dist/lint/post-synth/wgc401.js +50 -0
- package/dist/lint/post-synth/wgc402.js +46 -0
- package/dist/lint/post-synth/wgc403.js +74 -0
- package/dist/lint/post-synth/wgc501.js +63 -0
- package/dist/lint/post-synth/wgc502.js +37 -0
- package/dist/lint/post-synth/wgc503.js +49 -0
- package/dist/lint/rules/hardcoded-project.js +51 -0
- package/dist/lint/rules/hardcoded-region.js +51 -0
- package/dist/lint/rules/index.js +3 -0
- package/dist/lint/rules/public-iam.js +37 -0
- package/dist/lsp/completions.d.ts.map +1 -1
- package/dist/lsp/completions.js +15 -0
- package/dist/lsp/hover.d.ts.map +1 -1
- package/dist/lsp/hover.js +46 -0
- package/dist/manifest.json +1 -1
- package/dist/meta.json +1848 -481
- package/dist/okf/types/API.md +2 -0
- package/dist/okf/types/APIConfig.md +3 -0
- package/dist/okf/types/APIQuotaAdjusterSettings.md +2 -0
- package/dist/okf/types/APIQuotaPreference.md +2 -0
- package/dist/okf/types/AccessBoundaryPolicy.md +2 -0
- package/dist/okf/types/AccessLevel.md +2 -0
- package/dist/okf/types/AccessLevelCondition.md +1 -0
- package/dist/okf/types/AccessPolicy.md +4 -0
- package/dist/okf/types/AddonsConfig.md +1 -0
- package/dist/okf/types/AgentPool.md +2 -0
- package/dist/okf/types/AiplatformModel.md +2 -0
- package/dist/okf/types/AistreamsCluster.md +2 -0
- package/dist/okf/types/AlertPolicy.md +2 -0
- package/dist/okf/types/AlloydbBackup.md +9 -0
- package/dist/okf/types/AlloydbCluster.md +5 -0
- package/dist/okf/types/AlloydbInstance.md +10 -0
- package/dist/okf/types/AnalyticsAccount.md +2 -0
- package/dist/okf/types/AndroidApp.md +4 -0
- package/dist/okf/types/AnywhereCache.md +2 -0
- package/dist/okf/types/ApigatewayGateway.md +3 -0
- package/dist/okf/types/ApigeeEnvironment.md +5 -0
- package/dist/okf/types/ApigeeInstance.md +2 -0
- package/dist/okf/types/ApihubDeployment.md +2 -0
- package/dist/okf/types/ApikeysKey.md +2 -0
- package/dist/okf/types/AppConnection.md +1 -0
- package/dist/okf/types/AppConnector.md +2 -0
- package/dist/okf/types/AppGateway.md +3 -0
- package/dist/okf/types/AppProfile.md +3 -0
- package/dist/okf/types/Application.md +2 -0
- package/dist/okf/types/ArtifactRegistryRepository.md +4 -0
- package/dist/okf/types/Assignment.md +2 -0
- package/dist/okf/types/Attestor.md +2 -0
- package/dist/okf/types/AuthorizationPolicy.md +4 -0
- package/dist/okf/types/AuthorizedView.md +2 -0
- package/dist/okf/types/AutokeyConfig.md +2 -0
- package/dist/okf/types/Automation.md +2 -0
- package/dist/okf/types/Autoscaler.md +3 -0
- package/dist/okf/types/AutoscalingPolicy.md +2 -0
- package/dist/okf/types/BQJob.md +3 -0
- package/dist/okf/types/BackendBucket.md +3 -0
- package/dist/okf/types/BackendBucketSignedURLKey.md +1 -0
- package/dist/okf/types/BackendService.md +5 -0
- package/dist/okf/types/BackendServiceSignedURLKey.md +1 -0
- package/dist/okf/types/BackupPlanAssociation.md +2 -0
- package/dist/okf/types/BackupPolicy.md +2 -0
- package/dist/okf/types/BackupdrBackupPlan.md +2 -0
- package/dist/okf/types/BackupdrBackupVault.md +2 -0
- package/dist/okf/types/Batch.md +2 -0
- package/dist/okf/types/BatchJob.md +2 -0
- package/dist/okf/types/BatchTask.md +3 -0
- package/dist/okf/types/BigLakeCatalog.md +2 -0
- package/dist/okf/types/BigLakeDatabase.md +2 -0
- package/dist/okf/types/BigLakeTable.md +2 -0
- package/dist/okf/types/BigQueryDataPolicy.md +2 -0
- package/dist/okf/types/BigQueryDataset.md +6 -0
- package/dist/okf/types/BigQueryExport.md +2 -0
- package/dist/okf/types/BigQueryTable.md +11 -0
- package/dist/okf/types/BigqueryconnectionConnection.md +2 -0
- package/dist/okf/types/BigquerydatatransferConfig.md +2 -0
- package/dist/okf/types/BigqueryreservationReservation.md +2 -0
- package/dist/okf/types/BigtableInstance.md +1 -0
- package/dist/okf/types/BigtableTable.md +2 -0
- package/dist/okf/types/BillingAccount.md +2 -0
- package/dist/okf/types/BinaryauthorizationPolicy.md +3 -0
- package/dist/okf/types/Brand.md +2 -0
- package/dist/okf/types/BtBackup.md +2 -0
- package/dist/okf/types/BtCluster.md +2 -0
- package/dist/okf/types/Bucket.md +2 -0
- package/dist/okf/types/BucketAccessControl.md +3 -0
- package/dist/okf/types/Budget.md +2 -0
- package/dist/okf/types/CAPool.md +1 -0
- package/dist/okf/types/CapacityCommitment.md +5 -0
- package/dist/okf/types/CertificateAuthority.md +7 -0
- package/dist/okf/types/CertificateIssuanceConfig.md +2 -0
- package/dist/okf/types/CertificateMap.md +3 -0
- package/dist/okf/types/CertificateMapEntry.md +4 -0
- package/dist/okf/types/CertificateTemplate.md +3 -0
- package/dist/okf/types/CertificatemanagerCertificate.md +1 -0
- package/dist/okf/types/ClientConnectorService.md +2 -0
- package/dist/okf/types/ClientTLSPolicy.md +3 -0
- package/dist/okf/types/CloudBatchResourceAllowance.md +2 -0
- package/dist/okf/types/CloudFunction.md +4 -0
- package/dist/okf/types/CloudRunJob.md +13 -0
- package/dist/okf/types/CloudRunService.md +13 -0
- package/dist/okf/types/CloudbuildTrigger.md +4 -0
- package/dist/okf/types/ClouddmsPrivateConnection.md +2 -0
- package/dist/okf/types/CloudidentityGroup.md +5 -0
- package/dist/okf/types/CloudidentityMembership.md +6 -0
- package/dist/okf/types/CloudidsEndpoint.md +1 -0
- package/dist/okf/types/CloudschedulerJob.md +5 -0
- package/dist/okf/types/ComposerEnvironment.md +2 -0
- package/dist/okf/types/ComputeAddress.md +4 -0
- package/dist/okf/types/ComputeDisk.md +9 -0
- package/dist/okf/types/ComputeFirewallPolicy.md +7 -0
- package/dist/okf/types/ComputeHealthCheck.md +4 -0
- package/dist/okf/types/ComputeInstance.md +8 -0
- package/dist/okf/types/ComputeNetworkPeering.md +3 -0
- package/dist/okf/types/ComputeNodeGroup.md +3 -0
- package/dist/okf/types/ComputeReservation.md +6 -0
- package/dist/okf/types/ComputeRoute.md +3 -0
- package/dist/okf/types/ComputeSnapshot.md +7 -0
- package/dist/okf/types/ConfigcontrollerInstance.md +3 -0
- package/dist/okf/types/ConnectionProfile.md +2 -0
- package/dist/okf/types/ConnectivityTest.md +2 -0
- package/dist/okf/types/Connector.md +3 -0
- package/dist/okf/types/ConsentStore.md +1 -0
- package/dist/okf/types/ConsumerGroup.md +2 -0
- package/dist/okf/types/ConsumerQuotaOverride.md +2 -0
- package/dist/okf/types/Contact.md +2 -0
- package/dist/okf/types/ContainerattachedCluster.md +8 -0
- package/dist/okf/types/ConversionWorkspace.md +2 -0
- package/dist/okf/types/CryptoKeyVersion.md +5 -0
- package/dist/okf/types/CustomClass.md +2 -0
- package/dist/okf/types/CustomConstraint.md +2 -0
- package/dist/okf/types/CustomRole.md +3 -0
- package/dist/okf/types/CustomTargetType.md +2 -0
- package/dist/okf/types/DICOMStore.md +2 -0
- package/dist/okf/types/DNSAuthorization.md +2 -0
- package/dist/okf/types/DNSManagedZone.md +3 -0
- package/dist/okf/types/DNSRecordSet.md +1 -0
- package/dist/okf/types/Dashboard.md +2 -0
- package/dist/okf/types/DataExchange.md +2 -0
- package/dist/okf/types/DataLabelingJob.md +2 -0
- package/dist/okf/types/DataPolicy.md +2 -0
- package/dist/okf/types/DataStore.md +2 -0
- package/dist/okf/types/DataStoreTargetSite.md +2 -0
- package/dist/okf/types/Database.md +2 -0
- package/dist/okf/types/DatacatalogEntryGroup.md +2 -0
- package/dist/okf/types/DataflowJob.md +4 -0
- package/dist/okf/types/DataformRepository.md +2 -0
- package/dist/okf/types/DatafusionInstance.md +10 -0
- package/dist/okf/types/DataplexEntryGroup.md +2 -0
- package/dist/okf/types/DataplexTask.md +2 -0
- package/dist/okf/types/DataprocCluster.md +2 -0
- package/dist/okf/types/DataprocJob.md +2 -0
- package/dist/okf/types/DataprocNodeGroup.md +2 -0
- package/dist/okf/types/DataprocSession.md +2 -0
- package/dist/okf/types/DatasetAccess.md +2 -0
- package/dist/okf/types/DatastoreIndex.md +2 -0
- package/dist/okf/types/DatastreamPrivateConnection.md +2 -0
- package/dist/okf/types/DatastreamRoute.md +2 -0
- package/dist/okf/types/DefaultObjectAccessControl.md +5 -0
- package/dist/okf/types/DefaultSupportedIDPConfig.md +2 -0
- package/dist/okf/types/DeidentifyTemplate.md +4 -0
- package/dist/okf/types/DeliveryPipeline.md +2 -0
- package/dist/okf/types/DenyPolicy.md +2 -0
- package/dist/okf/types/DeployPolicy.md +2 -0
- package/dist/okf/types/DeploymentResourcePool.md +2 -0
- package/dist/okf/types/DeploymentmanagerDeployment.md +4 -0
- package/dist/okf/types/Device.md +8 -0
- package/dist/okf/types/DeviceRegistry.md +1 -0
- package/dist/okf/types/DevicestreamingSession.md +2 -0
- package/dist/okf/types/DialogflowAgent.md +2 -0
- package/dist/okf/types/DialogflowEntityType.md +2 -0
- package/dist/okf/types/DialogflowIntent.md +3 -0
- package/dist/okf/types/DialogflowcxAgent.md +3 -0
- package/dist/okf/types/DialogflowcxEntityType.md +2 -0
- package/dist/okf/types/DialogflowcxIntent.md +2 -0
- package/dist/okf/types/DiscoveredService.md +2 -0
- package/dist/okf/types/DiscoveredWorkload.md +2 -0
- package/dist/okf/types/DiskResourcePolicyAttachment.md +1 -0
- package/dist/okf/types/DnsPolicy.md +1 -0
- package/dist/okf/types/Document.md +2 -0
- package/dist/okf/types/DomainMapping.md +2 -0
- package/dist/okf/types/EdgeCacheKeyset.md +1 -0
- package/dist/okf/types/EdgeCacheOrigin.md +1 -0
- package/dist/okf/types/EdgeCacheService.md +1 -0
- package/dist/okf/types/EdgecontainerCluster.md +9 -0
- package/dist/okf/types/EdgecontainerNodePool.md +4 -0
- package/dist/okf/types/EdgenetworkNetwork.md +4 -0
- package/dist/okf/types/EndpointAttachment.md +2 -0
- package/dist/okf/types/EndpointPolicy.md +3 -0
- package/dist/okf/types/Engine.md +2 -0
- package/dist/okf/types/Enrollment.md +2 -0
- package/dist/okf/types/Entitlement.md +2 -0
- package/dist/okf/types/Entry.md +2 -0
- package/dist/okf/types/EntryType.md +2 -0
- package/dist/okf/types/Envgroup.md +2 -0
- package/dist/okf/types/EnvgroupAttachment.md +2 -0
- package/dist/okf/types/EventarcChannel.md +2 -0
- package/dist/okf/types/EventarcTrigger.md +5 -0
- package/dist/okf/types/ExampleStore.md +2 -0
- package/dist/okf/types/ExternalAccessRule.md +2 -0
- package/dist/okf/types/ExternalAddress.md +2 -0
- package/dist/okf/types/ExternalVPNGateway.md +3 -0
- package/dist/okf/types/FHIRStore.md +2 -0
- package/dist/okf/types/Feature.md +4 -0
- package/dist/okf/types/FeatureMembership.md +1 -0
- package/dist/okf/types/Featurestore.md +2 -0
- package/dist/okf/types/FeaturestoreEntityType.md +5 -0
- package/dist/okf/types/FeaturestoreEntityTypeFeature.md +5 -0
- package/dist/okf/types/Federation.md +2 -0
- package/dist/okf/types/Feed.md +2 -0
- package/dist/okf/types/Field.md +2 -0
- package/dist/okf/types/FilestoreBackup.md +7 -0
- package/dist/okf/types/FilestoreInstance.md +5 -0
- package/dist/okf/types/FilestoreSnapshot.md +4 -0
- package/dist/okf/types/FirebaseProject.md +3 -0
- package/dist/okf/types/FirebasedatabaseInstance.md +4 -0
- package/dist/okf/types/FirebasehostingChannel.md +2 -0
- package/dist/okf/types/FirestoreBackupSchedule.md +2 -0
- package/dist/okf/types/FirestoreIndex.md +2 -0
- package/dist/okf/types/Firewall.md +3 -0
- package/dist/okf/types/FirewallPolicyAssociation.md +2 -0
- package/dist/okf/types/FirewallPolicyRule.md +4 -0
- package/dist/okf/types/FirewallRule.md +1 -0
- package/dist/okf/types/FlexTemplateJob.md +4 -0
- package/dist/okf/types/FlexibleAppVersion.md +2 -0
- package/dist/okf/types/Flow.md +2 -0
- package/dist/okf/types/FolderFeed.md +3 -0
- package/dist/okf/types/ForwardingRule.md +10 -0
- package/dist/okf/types/Fulfillment.md +2 -0
- package/dist/okf/types/Function.md +5 -0
- package/dist/okf/types/FutureReservation.md +2 -0
- package/dist/okf/types/GCPServiceAccount.md +5 -0
- package/dist/okf/types/GCPUserAccessBinding.md +2 -0
- package/dist/okf/types/GCPolicy.md +1 -0
- package/dist/okf/types/GKECluster.md +8 -0
- package/dist/okf/types/GRPCRoute.md +4 -0
- package/dist/okf/types/GcsFolder.md +2 -0
- package/dist/okf/types/GkebackupBackup.md +2 -0
- package/dist/okf/types/GkebackupBackupPlan.md +2 -0
- package/dist/okf/types/GkehubMembership.md +6 -0
- package/dist/okf/types/GkehubNamespace.md +2 -0
- package/dist/okf/types/GlobalNetworkEndpoint.md +1 -0
- package/dist/okf/types/GlobalNetworkEndpointGroup.md +2 -0
- package/dist/okf/types/GoogleChannelConfig.md +2 -0
- package/dist/okf/types/GuestPolicy.md +4 -0
- package/dist/okf/types/HL7V2Store.md +2 -0
- package/dist/okf/types/HMACKey.md +5 -0
- package/dist/okf/types/HTTPHealthCheck.md +3 -0
- package/dist/okf/types/HTTPRoute.md +4 -0
- package/dist/okf/types/HTTPSHealthCheck.md +3 -0
- package/dist/okf/types/HealthcareDataset.md +2 -0
- package/dist/okf/types/Hub.md +5 -0
- package/dist/okf/types/IAMAuditConfig.md +1 -0
- package/dist/okf/types/IAMPolicy.md +1 -0
- package/dist/okf/types/IAMPolicyMember.md +1 -0
- package/dist/okf/types/IdentityAwareProxyClient.md +2 -0
- package/dist/okf/types/IdentityplatformConfig.md +2 -0
- package/dist/okf/types/Image.md +5 -0
- package/dist/okf/types/ImportJob.md +2 -0
- package/dist/okf/types/InboundSAMLConfig.md +1 -0
- package/dist/okf/types/IndexEndpoint.md +6 -0
- package/dist/okf/types/InspectTemplate.md +4 -0
- package/dist/okf/types/InstanceAttachment.md +2 -0
- package/dist/okf/types/InstanceConfig.md +2 -0
- package/dist/okf/types/InstanceEndpoint.md +1 -0
- package/dist/okf/types/InstanceGroup.md +3 -0
- package/dist/okf/types/InstanceGroupManager.md +8 -0
- package/dist/okf/types/InstanceGroupNamedPort.md +1 -0
- package/dist/okf/types/InstanceTemplate.md +5 -0
- package/dist/okf/types/InterceptDeployment.md +2 -0
- package/dist/okf/types/InterceptEndpointGroup.md +2 -0
- package/dist/okf/types/Interconnect.md +2 -0
- package/dist/okf/types/InterconnectAttachment.md +9 -0
- package/dist/okf/types/InternalRange.md +2 -0
- package/dist/okf/types/JobTrigger.md +5 -0
- package/dist/okf/types/KMSCryptoKey.md +2 -0
- package/dist/okf/types/KMSKeyRing.md +2 -0
- package/dist/okf/types/KeyHandle.md +2 -0
- package/dist/okf/types/KeyRingImportJob.md +4 -0
- package/dist/okf/types/LBRouteExtension.md +2 -0
- package/dist/okf/types/Lake.md +2 -0
- package/dist/okf/types/Lien.md +3 -0
- package/dist/okf/types/Link.md +2 -0
- package/dist/okf/types/Listing.md +2 -0
- package/dist/okf/types/LocationTagBinding.md +3 -0
- package/dist/okf/types/LogBucket.md +4 -0
- package/dist/okf/types/LogExclusion.md +3 -0
- package/dist/okf/types/LogMetric.md +3 -0
- package/dist/okf/types/LogSink.md +2 -0
- package/dist/okf/types/LogView.md +3 -0
- package/dist/okf/types/LogicalView.md +3 -0
- package/dist/okf/types/Machine.md +2 -0
- package/dist/okf/types/MachineImage.md +2 -0
- package/dist/okf/types/ManagedFolder.md +2 -0
- package/dist/okf/types/ManagedSSLCertificate.md +1 -0
- package/dist/okf/types/ManagedkafkaCluster.md +2 -0
- package/dist/okf/types/ManagedkafkaTopic.md +2 -0
- package/dist/okf/types/ManagementServer.md +2 -0
- package/dist/okf/types/MaterializedView.md +3 -0
- package/dist/okf/types/MembershipBinding.md +2 -0
- package/dist/okf/types/MemcacheInstance.md +4 -0
- package/dist/okf/types/MemorystoreInstance.md +2 -0
- package/dist/okf/types/Mesh.md +4 -0
- package/dist/okf/types/MetadataStore.md +2 -0
- package/dist/okf/types/MetastoreBackup.md +2 -0
- package/dist/okf/types/MetastoreService.md +2 -0
- package/dist/okf/types/MetricDescriptor.md +2 -0
- package/dist/okf/types/MigrationJob.md +2 -0
- package/dist/okf/types/MlengineModel.md +1 -0
- package/dist/okf/types/MonGroup.md +1 -0
- package/dist/okf/types/MonService.md +1 -0
- package/dist/okf/types/MonitoredProject.md +2 -0
- package/dist/okf/types/MuteConfig.md +2 -0
- package/dist/okf/types/NATAddress.md +3 -0
- package/dist/okf/types/NetappBackupVault.md +2 -0
- package/dist/okf/types/NetworkAttachment.md +2 -0
- package/dist/okf/types/NetworkEdgeSecurityService.md +2 -0
- package/dist/okf/types/NetworkEndpoint.md +1 -0
- package/dist/okf/types/NetworkEndpointGroup.md +3 -0
- package/dist/okf/types/NetworkFirewallPolicy.md +7 -0
- package/dist/okf/types/NetworkFirewallPolicyAssociation.md +2 -0
- package/dist/okf/types/NetworkFirewallPolicyRule.md +3 -0
- package/dist/okf/types/NetworkPeeringRoutesConfig.md +1 -0
- package/dist/okf/types/NetworkPolicy.md +2 -0
- package/dist/okf/types/NetworkservicesGateway.md +4 -0
- package/dist/okf/types/Node.md +2 -0
- package/dist/okf/types/NodePool.md +2 -0
- package/dist/okf/types/NodeTemplate.md +4 -0
- package/dist/okf/types/Note.md +3 -0
- package/dist/okf/types/NotebookInstance.md +2 -0
- package/dist/okf/types/NotebooksEnvironment.md +2 -0
- package/dist/okf/types/Notification.md +3 -0
- package/dist/okf/types/NotificationChannel.md +3 -0
- package/dist/okf/types/NotificationConfig.md +3 -0
- package/dist/okf/types/OAuthIDPConfig.md +1 -0
- package/dist/okf/types/OSPolicyAssignment.md +9 -0
- package/dist/okf/types/Occurrence.md +5 -0
- package/dist/okf/types/Organization.md +10 -0
- package/dist/okf/types/OrganizationFeed.md +2 -0
- package/dist/okf/types/OrganizationSecurityPolicy.md +3 -0
- package/dist/okf/types/OrganizationSecurityPolicyAssociation.md +2 -0
- package/dist/okf/types/OrganizationSecurityPolicyRule.md +1 -0
- package/dist/okf/types/OrgpolicyPolicy.md +2 -0
- package/dist/okf/types/PacketMirroring.md +4 -0
- package/dist/okf/types/Page.md +2 -0
- package/dist/okf/types/Parameter.md +2 -0
- package/dist/okf/types/ParameterVersion.md +2 -0
- package/dist/okf/types/PartialPolicy.md +1 -0
- package/dist/okf/types/PatchDeployment.md +5 -0
- package/dist/okf/types/PeeredDNSDomain.md +2 -0
- package/dist/okf/types/PerInstanceConfig.md +1 -0
- package/dist/okf/types/PhraseSet.md +2 -0
- package/dist/okf/types/PlatformPolicy.md +2 -0
- package/dist/okf/types/PolicyTag.md +3 -0
- package/dist/okf/types/PrivateCloud.md +2 -0
- package/dist/okf/types/PrivatecaCertificate.md +5 -0
- package/dist/okf/types/Processor.md +2 -0
- package/dist/okf/types/ProcessorDefaultVersion.md +1 -0
- package/dist/okf/types/ProcessorVersion.md +2 -0
- package/dist/okf/types/ProjectDefaultConfig.md +2 -0
- package/dist/okf/types/ProjectFeed.md +2 -0
- package/dist/okf/types/ProjectMetadata.md +1 -0
- package/dist/okf/types/PubSubSnapshot.md +2 -0
- package/dist/okf/types/PubSubSubscription.md +1 -0
- package/dist/okf/types/PubSubTopic.md +1 -0
- package/dist/okf/types/PubsubliteReservation.md +1 -0
- package/dist/okf/types/PubsubliteTopic.md +1 -0
- package/dist/okf/types/RecaptchaenterpriseFirewallPolicy.md +2 -0
- package/dist/okf/types/RecaptchaenterpriseKey.md +2 -0
- package/dist/okf/types/Recognizer.md +2 -0
- package/dist/okf/types/RedisCluster.md +2 -0
- package/dist/okf/types/RedisInstance.md +8 -0
- package/dist/okf/types/RegionAutoscaler.md +3 -0
- package/dist/okf/types/RegionDiskResourcePolicyAttachment.md +1 -0
- package/dist/okf/types/RegionNetworkEndpointGroup.md +2 -0
- package/dist/okf/types/RegionPerInstanceConfig.md +1 -0
- package/dist/okf/types/RegionSSLPolicy.md +4 -0
- package/dist/okf/types/RegionalEndpoint.md +2 -0
- package/dist/okf/types/ResourceBundle.md +2 -0
- package/dist/okf/types/ResourcePolicy.md +3 -0
- package/dist/okf/types/ResourcemanagerFolder.md +5 -0
- package/dist/okf/types/ResourcemanagerPolicy.md +3 -0
- package/dist/okf/types/ResourcemanagerProject.md +2 -0
- package/dist/okf/types/ResponsePolicy.md +1 -0
- package/dist/okf/types/ResponsePolicyRule.md +1 -0
- package/dist/okf/types/Restore.md +2 -0
- package/dist/okf/types/RestorePlan.md +2 -0
- package/dist/okf/types/Router.md +3 -0
- package/dist/okf/types/RouterInterface.md +1 -0
- package/dist/okf/types/RouterNAT.md +1 -0
- package/dist/okf/types/RouterPeer.md +2 -0
- package/dist/okf/types/Routine.md +3 -0
- package/dist/okf/types/Runtime.md +2 -0
- package/dist/okf/types/RuntimeTemplate.md +2 -0
- package/dist/okf/types/SQLDatabase.md +2 -0
- package/dist/okf/types/SQLInstance.md +10 -0
- package/dist/okf/types/SQLUser.md +1 -0
- package/dist/okf/types/SSHPublicKey.md +2 -0
- package/dist/okf/types/SSLCert.md +8 -0
- package/dist/okf/types/SSLCertificate.md +5 -0
- package/dist/okf/types/SSLPolicy.md +4 -0
- package/dist/okf/types/SavedQuery.md +2 -0
- package/dist/okf/types/Schema.md +1 -0
- package/dist/okf/types/Scope.md +5 -0
- package/dist/okf/types/ScopeRBACRoleBinding.md +2 -0
- package/dist/okf/types/SecretCiphertext.md +2 -0
- package/dist/okf/types/SecretManagerSecret.md +3 -0
- package/dist/okf/types/SecretManagerSecretVersion.md +6 -0
- package/dist/okf/types/SecuresourcemanagerInstance.md +2 -0
- package/dist/okf/types/SecuresourcemanagerRepository.md +2 -0
- package/dist/okf/types/SecurityPolicy.md +3 -0
- package/dist/okf/types/ServerTLSPolicy.md +3 -0
- package/dist/okf/types/ServiceAccountKey.md +6 -0
- package/dist/okf/types/ServiceAttachment.md +5 -0
- package/dist/okf/types/ServiceBinding.md +2 -0
- package/dist/okf/types/ServiceConnectionPolicy.md +2 -0
- package/dist/okf/types/ServiceIdentity.md +2 -0
- package/dist/okf/types/ServiceLevelObjective.md +4 -0
- package/dist/okf/types/ServicePerimeter.md +4 -0
- package/dist/okf/types/ServicePerimeterResource.md +1 -0
- package/dist/okf/types/ServiceProjectAttachment.md +2 -0
- package/dist/okf/types/ServiceSplitTraffic.md +1 -0
- package/dist/okf/types/ServicedirectoryEndpoint.md +2 -0
- package/dist/okf/types/ServicedirectoryNamespace.md +2 -0
- package/dist/okf/types/ServicedirectoryService.md +2 -0
- package/dist/okf/types/ServicenetworkingConnection.md +2 -0
- package/dist/okf/types/ServiceusageService.md +1 -0
- package/dist/okf/types/Settings.md +2 -0
- package/dist/okf/types/SharedVPCHostProject.md +1 -0
- package/dist/okf/types/SharedVPCServiceProject.md +1 -0
- package/dist/okf/types/Site.md +3 -0
- package/dist/okf/types/Source.md +2 -0
- package/dist/okf/types/SourcerepoRepository.md +3 -0
- package/dist/okf/types/SpannerBackupSchedule.md +2 -0
- package/dist/okf/types/SpannerDatabase.md +2 -0
- package/dist/okf/types/SpannerInstance.md +3 -0
- package/dist/okf/types/Spoke.md +5 -0
- package/dist/okf/types/StandardAppVersion.md +2 -0
- package/dist/okf/types/StorageBucket.md +3 -0
- package/dist/okf/types/StoragetransferJob.md +5 -0
- package/dist/okf/types/StoredInfoType.md +1 -0
- package/dist/okf/types/Stream.md +3 -0
- package/dist/okf/types/Subnet.md +5 -0
- package/dist/okf/types/Subnetwork.md +8 -0
- package/dist/okf/types/Subscription.md +1 -0
- package/dist/okf/types/SyncAuthorization.md +2 -0
- package/dist/okf/types/TCPRoute.md +4 -0
- package/dist/okf/types/TLSRoute.md +4 -0
- package/dist/okf/types/Tag.md +2 -0
- package/dist/okf/types/TagBinding.md +3 -0
- package/dist/okf/types/TagKey.md +6 -0
- package/dist/okf/types/TagTemplate.md +2 -0
- package/dist/okf/types/TagValue.md +6 -0
- package/dist/okf/types/Target.md +2 -0
- package/dist/okf/types/TargetGRPCProxy.md +5 -0
- package/dist/okf/types/TargetHTTPProxy.md +4 -0
- package/dist/okf/types/TargetHTTPSProxy.md +5 -0
- package/dist/okf/types/TargetInstance.md +3 -0
- package/dist/okf/types/TargetPool.md +2 -0
- package/dist/okf/types/TargetSSLProxy.md +4 -0
- package/dist/okf/types/TargetTCPProxy.md +5 -0
- package/dist/okf/types/TargetVPNGateway.md +4 -0
- package/dist/okf/types/TasksQueue.md +2 -0
- package/dist/okf/types/Taxonomy.md +3 -0
- package/dist/okf/types/Tenant.md +1 -0
- package/dist/okf/types/TenantDefaultSupportedIDPConfig.md +2 -0
- package/dist/okf/types/TenantInboundSAMLConfig.md +1 -0
- package/dist/okf/types/TenantOAuthIDPConfig.md +1 -0
- package/dist/okf/types/Tensorboard.md +6 -0
- package/dist/okf/types/URLMap.md +5 -0
- package/dist/okf/types/UptimeCheckConfig.md +1 -0
- package/dist/okf/types/User.md +2 -0
- package/dist/okf/types/VPCNetwork.md +3 -0
- package/dist/okf/types/VPNGateway.md +2 -0
- package/dist/okf/types/VPNTunnel.md +7 -0
- package/dist/okf/types/VertexaiDataset.md +1 -0
- package/dist/okf/types/VertexaiEndpoint.md +1 -0
- package/dist/okf/types/VertexaiIndex.md +1 -0
- package/dist/okf/types/VirtualMachine.md +2 -0
- package/dist/okf/types/VmwareengineNetwork.md +2 -0
- package/dist/okf/types/VmwareengineNetworkPeering.md +2 -0
- package/dist/okf/types/VpnConnection.md +3 -0
- package/dist/okf/types/WasmPlugin.md +2 -0
- package/dist/okf/types/WebApp.md +3 -0
- package/dist/okf/types/Webhook.md +3 -0
- package/dist/okf/types/WorkerPool.md +2 -0
- package/dist/okf/types/Workflow.md +2 -0
- package/dist/okf/types/WorkflowTemplate.md +4 -0
- package/dist/okf/types/WorkflowsExecution.md +2 -0
- package/dist/okf/types/WorkforcePool.md +3 -0
- package/dist/okf/types/WorkforcePoolProvider.md +2 -0
- package/dist/okf/types/Workload.md +2 -0
- package/dist/okf/types/WorkloadIdentityPool.md +2 -0
- package/dist/okf/types/WorkloadIdentityPoolProvider.md +2 -0
- package/dist/okf/types/Workstation.md +2 -0
- package/dist/okf/types/WorkstationCluster.md +2 -0
- package/dist/okf/types/WorkstationConfig.md +2 -0
- package/dist/okf/types/Zone.md +2 -0
- package/dist/op/activities/floci-gcp.js +49 -0
- package/dist/op/activities/gcp-apply.js +618 -0
- package/dist/op/activities/index.js +10 -0
- package/dist/op/builders.js +50 -0
- package/dist/ownership.js +38 -0
- package/dist/package-cli.js +20 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +377 -0
- package/dist/pseudo.js +15 -0
- package/dist/rules/schema-registry.ts +2 -1
- package/dist/serializer.d.ts.map +1 -1
- package/dist/serializer.js +247 -0
- package/dist/spec/fetch.js +107 -0
- package/dist/spec/parse.d.ts +1 -1
- package/dist/spec/parse.js +339 -0
- package/dist/types/index.d.ts +1367 -0
- package/dist/validate-cli.js +11 -0
- package/dist/validate.js +24 -0
- package/dist/variables.js +15 -0
- package/package.json +8 -8
- package/src/attributes.test.ts +16 -0
- package/src/codegen/generate.ts +8 -3
- package/src/codegen/package.ts +2 -2
- package/src/composites/catalog.ts +7 -1
- package/src/composites/cloud-run-service.ts +12 -5
- package/src/composites/composites.test.ts +17 -0
- package/src/generated/index.d.ts +1367 -0
- package/src/generated/index.ts +487 -487
- package/src/generated/lexicon-gcp.json +1848 -481
- package/src/health.test.ts +59 -0
- package/src/health.ts +123 -0
- package/src/index.ts +3 -0
- package/src/lint/post-synth/schema-registry.ts +2 -1
- package/src/lsp/completions.ts +2 -1
- package/src/lsp/hover.ts +2 -1
- package/src/plugin.ts +8 -0
- package/src/serializer-outputs.test.ts +26 -0
- package/src/serializer.ts +21 -3
- package/src/spec/parse.test.ts +42 -2
- package/src/spec/parse.ts +17 -1
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CRD parser for GCP Config Connector resources.
|
|
3
|
+
*
|
|
4
|
+
* Adapts the K8s CRD parser pattern for GCP-specific concerns:
|
|
5
|
+
* - Type naming: GCP::{Service}::{Kind}
|
|
6
|
+
* - resourceRef detection
|
|
7
|
+
* - Status fields skipped as props; scalar ones become attributes
|
|
8
|
+
*/
|
|
9
|
+
import yaml from "js-yaml";
|
|
10
|
+
// ── Naming helpers ──────────────────────────────────────────────────
|
|
11
|
+
/**
|
|
12
|
+
* Extract GCP service name from a CNRM group.
|
|
13
|
+
* "compute.cnrm.cloud.google.com" → "Compute"
|
|
14
|
+
*/
|
|
15
|
+
export function gcpServiceName(group) {
|
|
16
|
+
const firstSegment = group.split(".")[0];
|
|
17
|
+
return firstSegment.charAt(0).toUpperCase() + firstSegment.slice(1);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Strip the service prefix from a CRD kind.
|
|
21
|
+
* "ComputeInstance", "Compute" → "Instance"
|
|
22
|
+
* "IAMPolicyMember", "Iam" → "PolicyMember"
|
|
23
|
+
*/
|
|
24
|
+
export function stripServicePrefix(kind, service) {
|
|
25
|
+
// Direct match (e.g., "Compute" prefix in "ComputeInstance")
|
|
26
|
+
if (kind.startsWith(service)) {
|
|
27
|
+
const rest = kind.slice(service.length);
|
|
28
|
+
if (rest.length > 0 && rest[0] === rest[0].toUpperCase()) {
|
|
29
|
+
return rest;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Case-insensitive match (e.g., "IAM" prefix when service is "Iam")
|
|
33
|
+
const kindLower = kind.toLowerCase();
|
|
34
|
+
const serviceLower = service.toLowerCase();
|
|
35
|
+
if (kindLower.startsWith(serviceLower)) {
|
|
36
|
+
const rest = kind.slice(service.length);
|
|
37
|
+
if (rest.length > 0 && rest[0] === rest[0].toUpperCase()) {
|
|
38
|
+
return rest;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return kind;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build full GCP type name.
|
|
45
|
+
* "compute.cnrm.cloud.google.com", "ComputeInstance" → "GCP::Compute::Instance"
|
|
46
|
+
*/
|
|
47
|
+
export function gcpTypeName(group, kind) {
|
|
48
|
+
const service = gcpServiceName(group);
|
|
49
|
+
const shortKind = stripServicePrefix(kind, service);
|
|
50
|
+
return `GCP::${service}::${shortKind}`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Extract short name from a GCP type.
|
|
54
|
+
* "GCP::Compute::Instance" → "Instance"
|
|
55
|
+
*/
|
|
56
|
+
export function gcpShortName(typeName) {
|
|
57
|
+
const parts = typeName.split("::");
|
|
58
|
+
return parts[parts.length - 1];
|
|
59
|
+
}
|
|
60
|
+
// ── CRD Parsing ─────────────────────────────────────────────────────
|
|
61
|
+
/**
|
|
62
|
+
* Parse a CRD YAML document string into GcpParseResult entries.
|
|
63
|
+
* Supports multi-document YAML for CRD bundles.
|
|
64
|
+
*/
|
|
65
|
+
export function parseGcpCRD(content) {
|
|
66
|
+
const text = typeof content === "string" ? content : content.toString("utf-8");
|
|
67
|
+
const results = [];
|
|
68
|
+
const documents = text
|
|
69
|
+
.split(/^---\s*$/m)
|
|
70
|
+
.map((d) => d.trim())
|
|
71
|
+
.filter((d) => d.length > 0);
|
|
72
|
+
for (const docStr of documents) {
|
|
73
|
+
const doc = yaml.load(docStr);
|
|
74
|
+
if (!doc || doc.kind !== "CustomResourceDefinition")
|
|
75
|
+
continue;
|
|
76
|
+
const spec = doc.spec;
|
|
77
|
+
if (!spec?.group || !spec?.names?.kind || !spec?.versions)
|
|
78
|
+
continue;
|
|
79
|
+
// Only process groups that are Config Connector CRDs
|
|
80
|
+
if (!spec.group.includes("cnrm.cloud.google.com"))
|
|
81
|
+
continue;
|
|
82
|
+
const crdResults = parseCRDSpec(spec);
|
|
83
|
+
results.push(...crdResults);
|
|
84
|
+
}
|
|
85
|
+
return results;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Parse a CRD spec into GcpParseResult entries.
|
|
89
|
+
*/
|
|
90
|
+
function parseCRDSpec(spec) {
|
|
91
|
+
const results = [];
|
|
92
|
+
// Find the storage version (canonical)
|
|
93
|
+
const storageVersion = spec.versions.find((v) => v.storage && v.served);
|
|
94
|
+
const targetVersion = storageVersion ?? spec.versions.find((v) => v.served);
|
|
95
|
+
if (!targetVersion)
|
|
96
|
+
return results;
|
|
97
|
+
const typeName = gcpTypeName(spec.group, spec.names.kind);
|
|
98
|
+
const gvk = {
|
|
99
|
+
group: spec.group,
|
|
100
|
+
version: targetVersion.name,
|
|
101
|
+
kind: spec.names.kind,
|
|
102
|
+
};
|
|
103
|
+
const schema = targetVersion.schema?.openAPIV3Schema;
|
|
104
|
+
const specSchema = schema?.properties?.spec;
|
|
105
|
+
const properties = specSchema ? extractSpecProperties(specSchema) : [];
|
|
106
|
+
const propertyTypes = specSchema ? extractPropertyTypes(specSchema, typeName) : [];
|
|
107
|
+
const enums = specSchema ? extractEnums(specSchema, typeName) : [];
|
|
108
|
+
results.push({
|
|
109
|
+
resource: {
|
|
110
|
+
typeName,
|
|
111
|
+
description: `Config Connector resource: ${spec.names.kind} (${spec.group})`,
|
|
112
|
+
properties,
|
|
113
|
+
attributes: [
|
|
114
|
+
{ name: "name", tsType: "string" },
|
|
115
|
+
{ name: "namespace", tsType: "string" },
|
|
116
|
+
{ name: "uid", tsType: "string" },
|
|
117
|
+
...statusAttributes(schema?.properties?.status),
|
|
118
|
+
],
|
|
119
|
+
deprecatedProperties: [],
|
|
120
|
+
},
|
|
121
|
+
propertyTypes,
|
|
122
|
+
enums,
|
|
123
|
+
gvk,
|
|
124
|
+
});
|
|
125
|
+
return results;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* The scalar top-level fields of a CRD's `status`, such as RunService's
|
|
129
|
+
* `status.uri` (#4179), as dotted attribute names. Config Connector fills them
|
|
130
|
+
* once the resource is ready, so they can't appear in the resource's own
|
|
131
|
+
* YAML, but another lexicon or an output can reference them.
|
|
132
|
+
*/
|
|
133
|
+
function statusAttributes(statusSchema) {
|
|
134
|
+
const out = [];
|
|
135
|
+
for (const [name, prop] of Object.entries(statusSchema?.properties ?? {})) {
|
|
136
|
+
if (prop.type !== "string" && prop.type !== "integer" && prop.type !== "number" && prop.type !== "boolean")
|
|
137
|
+
continue;
|
|
138
|
+
out.push({ name: `status.${name}`, tsType: resolveSchemaType(prop) });
|
|
139
|
+
}
|
|
140
|
+
return out;
|
|
141
|
+
}
|
|
142
|
+
// ── Property extraction ─────────────────────────────────────────────
|
|
143
|
+
/**
|
|
144
|
+
* Extract properties from the spec sub-object of a CRD schema.
|
|
145
|
+
*/
|
|
146
|
+
function extractSpecProperties(specSchema) {
|
|
147
|
+
const result = [];
|
|
148
|
+
const props = specSchema.properties ?? {};
|
|
149
|
+
const requiredSet = new Set(specSchema.required ?? []);
|
|
150
|
+
for (const [name, prop] of Object.entries(props)) {
|
|
151
|
+
const isRef = isResourceRef(prop);
|
|
152
|
+
result.push({
|
|
153
|
+
name,
|
|
154
|
+
tsType: resolveSchemaType(prop),
|
|
155
|
+
required: requiredSet.has(name),
|
|
156
|
+
description: prop.description,
|
|
157
|
+
enum: prop.enum,
|
|
158
|
+
constraints: extractConstraints(prop),
|
|
159
|
+
...(isRef && { isResourceRef: true }),
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Detect Config Connector resourceRef fields.
|
|
166
|
+
* These typically have `name` and `external` sub-properties,
|
|
167
|
+
* optionally with `namespace`, `kind`, and `apiVersion`.
|
|
168
|
+
*/
|
|
169
|
+
function isResourceRef(schema) {
|
|
170
|
+
if (schema.type !== "object" || !schema.properties)
|
|
171
|
+
return false;
|
|
172
|
+
const keys = new Set(Object.keys(schema.properties));
|
|
173
|
+
// Must have either `name` or `external`
|
|
174
|
+
if (!keys.has("name") && !keys.has("external"))
|
|
175
|
+
return false;
|
|
176
|
+
// Must be a small object with only ref-like keys
|
|
177
|
+
const refKeys = new Set(["name", "external", "namespace", "kind", "apiVersion"]);
|
|
178
|
+
for (const key of keys) {
|
|
179
|
+
if (!refKeys.has(key))
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
return keys.size >= 2;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Extract nested object types as ParsedPropertyType entries.
|
|
186
|
+
*/
|
|
187
|
+
function extractPropertyTypes(specSchema, parentTypeName) {
|
|
188
|
+
const results = [];
|
|
189
|
+
const props = specSchema.properties ?? {};
|
|
190
|
+
for (const [name, prop] of Object.entries(props)) {
|
|
191
|
+
// Skip resourceRef fields — they are treated as references, not nested types
|
|
192
|
+
if (isResourceRef(prop))
|
|
193
|
+
continue;
|
|
194
|
+
// Inline object definitions
|
|
195
|
+
if (prop.type === "object" && prop.properties) {
|
|
196
|
+
const ptName = `${parentTypeName}::${pascalCase(name)}`;
|
|
197
|
+
const requiredSet = new Set(prop.required ?? []);
|
|
198
|
+
results.push({
|
|
199
|
+
name: ptName,
|
|
200
|
+
specType: name,
|
|
201
|
+
properties: Object.entries(prop.properties).map(([pName, pSchema]) => ({
|
|
202
|
+
name: pName,
|
|
203
|
+
tsType: resolveSchemaType(pSchema),
|
|
204
|
+
required: requiredSet.has(pName),
|
|
205
|
+
description: pSchema.description,
|
|
206
|
+
enum: pSchema.enum,
|
|
207
|
+
constraints: extractConstraints(pSchema),
|
|
208
|
+
...(isResourceRef(pSchema) && { isResourceRef: true }),
|
|
209
|
+
})),
|
|
210
|
+
});
|
|
211
|
+
// Recurse into nested objects
|
|
212
|
+
for (const [subName, subProp] of Object.entries(prop.properties)) {
|
|
213
|
+
if (subProp.type === "object" && subProp.properties && !isResourceRef(subProp)) {
|
|
214
|
+
const subPtName = `${ptName}::${pascalCase(subName)}`;
|
|
215
|
+
const subRequiredSet = new Set(subProp.required ?? []);
|
|
216
|
+
results.push({
|
|
217
|
+
name: subPtName,
|
|
218
|
+
specType: subName,
|
|
219
|
+
properties: Object.entries(subProp.properties).map(([spName, spSchema]) => ({
|
|
220
|
+
name: spName,
|
|
221
|
+
tsType: resolveSchemaType(spSchema),
|
|
222
|
+
required: subRequiredSet.has(spName),
|
|
223
|
+
description: spSchema.description,
|
|
224
|
+
enum: spSchema.enum,
|
|
225
|
+
constraints: extractConstraints(spSchema),
|
|
226
|
+
})),
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Array of objects
|
|
232
|
+
if (prop.type === "array" && prop.items?.type === "object" && prop.items.properties) {
|
|
233
|
+
if (isResourceRef(prop.items))
|
|
234
|
+
continue;
|
|
235
|
+
const itemSchema = prop.items;
|
|
236
|
+
const ptName = `${parentTypeName}::${pascalCase(singularize(name))}`;
|
|
237
|
+
const requiredSet = new Set(itemSchema.required ?? []);
|
|
238
|
+
results.push({
|
|
239
|
+
name: ptName,
|
|
240
|
+
specType: name,
|
|
241
|
+
properties: Object.entries(itemSchema.properties).map(([pName, pSchema]) => ({
|
|
242
|
+
name: pName,
|
|
243
|
+
tsType: resolveSchemaType(pSchema),
|
|
244
|
+
required: requiredSet.has(pName),
|
|
245
|
+
description: pSchema.description,
|
|
246
|
+
enum: pSchema.enum,
|
|
247
|
+
constraints: extractConstraints(pSchema),
|
|
248
|
+
...(isResourceRef(pSchema) && { isResourceRef: true }),
|
|
249
|
+
})),
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return results;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Extract enum types from the spec schema.
|
|
257
|
+
*/
|
|
258
|
+
function extractEnums(specSchema, parentTypeName) {
|
|
259
|
+
const results = [];
|
|
260
|
+
const props = specSchema.properties ?? {};
|
|
261
|
+
for (const [name, prop] of Object.entries(props)) {
|
|
262
|
+
if (prop.enum && prop.enum.length > 0) {
|
|
263
|
+
results.push({
|
|
264
|
+
name: `${parentTypeName}::${pascalCase(name)}`,
|
|
265
|
+
values: prop.enum,
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return results;
|
|
270
|
+
}
|
|
271
|
+
// ── Schema type resolution ──────────────────────────────────────────
|
|
272
|
+
function resolveSchemaType(schema) {
|
|
273
|
+
if (!schema)
|
|
274
|
+
return "any";
|
|
275
|
+
if (schema["x-kubernetes-int-or-string"])
|
|
276
|
+
return "string | number";
|
|
277
|
+
if (schema["x-kubernetes-preserve-unknown-fields"])
|
|
278
|
+
return "Record<string, any>";
|
|
279
|
+
if (schema.enum && schema.enum.length > 0) {
|
|
280
|
+
return schema.enum.map((v) => JSON.stringify(v)).join(" | ");
|
|
281
|
+
}
|
|
282
|
+
switch (schema.type) {
|
|
283
|
+
case "string":
|
|
284
|
+
return "string";
|
|
285
|
+
case "integer":
|
|
286
|
+
case "number":
|
|
287
|
+
return "number";
|
|
288
|
+
case "boolean":
|
|
289
|
+
return "boolean";
|
|
290
|
+
case "array":
|
|
291
|
+
if (schema.items) {
|
|
292
|
+
const itemType = resolveSchemaType(schema.items);
|
|
293
|
+
if (itemType.includes(" | "))
|
|
294
|
+
return `(${itemType})[]`;
|
|
295
|
+
return `${itemType}[]`;
|
|
296
|
+
}
|
|
297
|
+
return "any[]";
|
|
298
|
+
case "object":
|
|
299
|
+
if (schema.additionalProperties && typeof schema.additionalProperties === "object") {
|
|
300
|
+
const valueType = resolveSchemaType(schema.additionalProperties);
|
|
301
|
+
return `Record<string, ${valueType}>`;
|
|
302
|
+
}
|
|
303
|
+
if (schema.properties)
|
|
304
|
+
return "Record<string, any>"; // will be a property type
|
|
305
|
+
return "Record<string, any>";
|
|
306
|
+
default:
|
|
307
|
+
return "any";
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
function extractConstraints(schema) {
|
|
311
|
+
const constraints = {};
|
|
312
|
+
if (schema.minimum !== undefined)
|
|
313
|
+
constraints.minimum = schema.minimum;
|
|
314
|
+
if (schema.maximum !== undefined)
|
|
315
|
+
constraints.maximum = schema.maximum;
|
|
316
|
+
if (schema.minLength !== undefined)
|
|
317
|
+
constraints.minLength = schema.minLength;
|
|
318
|
+
if (schema.maxLength !== undefined)
|
|
319
|
+
constraints.maxLength = schema.maxLength;
|
|
320
|
+
if (schema.pattern !== undefined)
|
|
321
|
+
constraints.pattern = schema.pattern;
|
|
322
|
+
return constraints;
|
|
323
|
+
}
|
|
324
|
+
// ── Utilities ───────────────────────────────────────────────────────
|
|
325
|
+
function pascalCase(str) {
|
|
326
|
+
return str
|
|
327
|
+
.split(/[-_.]/)
|
|
328
|
+
.map((s) => s.charAt(0).toUpperCase() + s.slice(1))
|
|
329
|
+
.join("");
|
|
330
|
+
}
|
|
331
|
+
function singularize(str) {
|
|
332
|
+
if (str.endsWith("ies"))
|
|
333
|
+
return str.slice(0, -3) + "y";
|
|
334
|
+
if (str.endsWith("ses"))
|
|
335
|
+
return str.slice(0, -2);
|
|
336
|
+
if (str.endsWith("s") && !str.endsWith("ss"))
|
|
337
|
+
return str.slice(0, -1);
|
|
338
|
+
return str;
|
|
339
|
+
}
|