@ductape/sdk 0.1.14 → 0.1.16
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/api/services/cloudApi.service.d.ts +49 -1
- package/dist/api/services/cloudApi.service.js +49 -0
- package/dist/api/services/cloudApi.service.js.map +1 -1
- package/dist/api/urls.d.ts +9 -0
- package/dist/api/urls.js +11 -1
- package/dist/api/urls.js.map +1 -1
- package/dist/cloud/aws-vpc-provision.util.d.ts +23 -0
- package/dist/cloud/aws-vpc-provision.util.js +54 -0
- package/dist/cloud/aws-vpc-provision.util.js.map +1 -0
- package/dist/cloud/cloud-broker-link.util.js +4 -8
- package/dist/cloud/cloud-broker-link.util.js.map +1 -1
- package/dist/cloud/cloud-database-link.util.js +18 -16
- package/dist/cloud/cloud-database-link.util.js.map +1 -1
- package/dist/cloud/cloud-graph-link.util.js +10 -2
- package/dist/cloud/cloud-graph-link.util.js.map +1 -1
- package/dist/cloud/cloud-runtime.util.js +9 -2
- package/dist/cloud/cloud-runtime.util.js.map +1 -1
- package/dist/cloud/cloud-vector-link.util.js +2 -2
- package/dist/cloud/cloud-vector-link.util.js.map +1 -1
- package/dist/cloud/cloud.service.d.ts +25 -1
- package/dist/cloud/cloud.service.js +21 -0
- package/dist/cloud/cloud.service.js.map +1 -1
- package/dist/cloud/index.d.ts +5 -0
- package/dist/cloud/index.js +15 -1
- package/dist/cloud/index.js.map +1 -1
- package/dist/cloud/types/cloud.types.d.ts +99 -2
- package/dist/cloud/vpc-connector-connect.util.d.ts +10 -0
- package/dist/cloud/vpc-connector-connect.util.js +23 -0
- package/dist/cloud/vpc-connector-connect.util.js.map +1 -0
- package/dist/cloud/vpc-connector-endpoint.util.d.ts +4 -0
- package/dist/cloud/vpc-connector-endpoint.util.js +24 -0
- package/dist/cloud/vpc-connector-endpoint.util.js.map +1 -0
- package/dist/cloud/vpc-connector-relay.util.d.ts +3 -0
- package/dist/cloud/vpc-connector-relay.util.js +17 -0
- package/dist/cloud/vpc-connector-relay.util.js.map +1 -0
- package/dist/cloud/vpc-connector-tunnel.client.d.ts +16 -0
- package/dist/cloud/vpc-connector-tunnel.client.js +149 -0
- package/dist/cloud/vpc-connector-tunnel.client.js.map +1 -0
- package/dist/database/adapters/postgresql.adapter.js +47 -5
- package/dist/database/adapters/postgresql.adapter.js.map +1 -1
- package/dist/database/databases.service.js +19 -16
- package/dist/database/databases.service.js.map +1 -1
- package/dist/database/types/connection.interface.d.ts +9 -0
- package/dist/graph/adapters/base.adapter.d.ts +2 -0
- package/dist/graph/adapters/base.adapter.js.map +1 -1
- package/dist/graph/adapters/neptune.adapter.js +37 -0
- package/dist/graph/adapters/neptune.adapter.js.map +1 -1
- package/dist/graph/graphs.service.js +22 -20
- package/dist/graph/graphs.service.js.map +1 -1
- package/dist/graph/types/connection.interface.d.ts +2 -0
- package/dist/index.d.ts +26 -2
- package/dist/index.js +36 -1
- package/dist/index.js.map +1 -1
- package/dist/storage/storage-cloud-link.util.js +4 -8
- package/dist/storage/storage-cloud-link.util.js.map +1 -1
- package/dist/types/productsBuilder.types.d.ts +14 -0
- package/dist/types/productsBuilder.types.js.map +1 -1
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-vector-link.util.js","sourceRoot":"","sources":["../../src/cloud/cloud-vector-link.util.ts"],"names":[],"mappings":";;AA6BA,
|
|
1
|
+
{"version":3,"file":"cloud-vector-link.util.js","sourceRoot":"","sources":["../../src/cloud/cloud-vector-link.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { CloudApiService } from '../api/services/cloudApi.service';
|
|
5
5
|
import { EnvType, IRequestExtension } from '../types';
|
|
6
|
-
import { ICloudConnection, ICloudConnectionSetup, ICompleteCloudConnectionInput, IUpdateCloudConnectionInput, ICreateCloudConnectionInput, IImportCloudResourceInput, IImportCloudResourceResult, IListCloudResourcesInput, IListCloudResourcesResult, IProvisionCloudResourceInput, IProvisionCloudResourceResult, ICloudRuntimeCredentials, ICloudRuntimeCredentialsInput, IValidateCloudConnectionResult } from './types';
|
|
6
|
+
import { ICloudConnection, ICloudConnectionSetup, ICompleteCloudConnectionInput, IUpdateCloudConnectionInput, IUpdateCloudSecurityGroupsInput, IUpdateCloudManagedNetworkingInput, IUpdateCloudVpcConnectorInput, ICloudVpcConnectorStatus, IResolveCloudHostResult, ICreateCloudConnectionInput, IImportCloudResourceInput, IImportCloudResourceResult, IListCloudResourcesInput, IListCloudResourcesResult, IProvisionCloudResourceInput, IProvisionCloudResourceResult, ICloudRuntimeCredentials, ICloudRuntimeCredentialsInput, IValidateCloudConnectionResult } from './types';
|
|
7
7
|
export declare class CloudError extends Error {
|
|
8
8
|
code?: string;
|
|
9
9
|
details?: unknown;
|
|
@@ -25,6 +25,30 @@ export declare class CloudService {
|
|
|
25
25
|
fetchConnection(cloud: string): Promise<ICloudConnection>;
|
|
26
26
|
deleteConnection(cloud: string): Promise<void>;
|
|
27
27
|
updateConnection(cloud: string, input: IUpdateCloudConnectionInput): Promise<ICloudConnection>;
|
|
28
|
+
updateSecurityGroups(cloud: string, input: IUpdateCloudSecurityGroupsInput): Promise<ICloudConnection>;
|
|
29
|
+
updateManagedNetworking(cloud: string, input: IUpdateCloudManagedNetworkingInput): Promise<ICloudConnection>;
|
|
30
|
+
resolveNetworkingHost(host: string): Promise<IResolveCloudHostResult>;
|
|
31
|
+
updateVpcConnector(cloud: string, input: IUpdateCloudVpcConnectorInput): Promise<ICloudConnection & {
|
|
32
|
+
vpc_connector?: Record<string, unknown>;
|
|
33
|
+
}>;
|
|
34
|
+
getVpcConnectorStatus(cloud: string): Promise<ICloudVpcConnectorStatus>;
|
|
35
|
+
listVpcConnectorVpcs(cloud: string, region: string): Promise<{
|
|
36
|
+
region: string;
|
|
37
|
+
vpcs: Array<{
|
|
38
|
+
vpcId: string;
|
|
39
|
+
name?: string;
|
|
40
|
+
isDefault: boolean;
|
|
41
|
+
}>;
|
|
42
|
+
}>;
|
|
43
|
+
listVpcConnectorSubnets(cloud: string, region: string, vpcId: string): Promise<{
|
|
44
|
+
region: string;
|
|
45
|
+
vpc_id: string;
|
|
46
|
+
subnets: Array<{
|
|
47
|
+
subnetId: string;
|
|
48
|
+
availabilityZone?: string;
|
|
49
|
+
name?: string;
|
|
50
|
+
}>;
|
|
51
|
+
}>;
|
|
28
52
|
completeConnection(cloud: string, input: ICompleteCloudConnectionInput): Promise<ICloudConnection>;
|
|
29
53
|
validateConnection(cloud: string): Promise<IValidateCloudConnectionResult>;
|
|
30
54
|
listResources(input: IListCloudResourcesInput): Promise<IListCloudResourcesResult>;
|
|
@@ -38,6 +38,27 @@ class CloudService {
|
|
|
38
38
|
async updateConnection(cloud, input) {
|
|
39
39
|
return this.api.updateConnection(cloud, input, this.auth());
|
|
40
40
|
}
|
|
41
|
+
async updateSecurityGroups(cloud, input) {
|
|
42
|
+
return this.api.updateSecurityGroups(cloud, input, this.auth());
|
|
43
|
+
}
|
|
44
|
+
async updateManagedNetworking(cloud, input) {
|
|
45
|
+
return this.api.updateManagedNetworking(cloud, input, this.auth());
|
|
46
|
+
}
|
|
47
|
+
async resolveNetworkingHost(host) {
|
|
48
|
+
return this.api.resolveNetworkingHost(host, this.auth());
|
|
49
|
+
}
|
|
50
|
+
async updateVpcConnector(cloud, input) {
|
|
51
|
+
return this.api.updateVpcConnector(cloud, input, this.auth());
|
|
52
|
+
}
|
|
53
|
+
async getVpcConnectorStatus(cloud) {
|
|
54
|
+
return this.api.getVpcConnectorStatus(cloud, this.auth());
|
|
55
|
+
}
|
|
56
|
+
async listVpcConnectorVpcs(cloud, region) {
|
|
57
|
+
return this.api.listVpcConnectorVpcs(cloud, region, this.auth());
|
|
58
|
+
}
|
|
59
|
+
async listVpcConnectorSubnets(cloud, region, vpcId) {
|
|
60
|
+
return this.api.listVpcConnectorSubnets(cloud, region, vpcId, this.auth());
|
|
61
|
+
}
|
|
41
62
|
async completeConnection(cloud, input) {
|
|
42
63
|
return this.api.completeConnection(cloud, input, this.auth());
|
|
43
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud.service.js","sourceRoot":"","sources":["../../src/cloud/cloud.service.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uEAAmE;
|
|
1
|
+
{"version":3,"file":"cloud.service.js","sourceRoot":"","sources":["../../src/cloud/cloud.service.ts"],"names":[],"mappings":"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"}
|
package/dist/cloud/index.d.ts
CHANGED
|
@@ -5,6 +5,11 @@ export { materializeCloudLinkedBrokerEnv } from './cloud-broker-link.util';
|
|
|
5
5
|
export { materializeCloudLinkedDatabaseEnv } from './cloud-database-link.util';
|
|
6
6
|
export { materializeCloudLinkedGraphEnv } from './cloud-graph-link.util';
|
|
7
7
|
export { materializeCloudLinkedVectorEnv } from './cloud-vector-link.util';
|
|
8
|
+
export { openVpcConnectorTunnelStream } from './vpc-connector-tunnel.client';
|
|
9
|
+
export { buildVpcConnectorTunnelAdapterOptions } from './vpc-connector-connect.util';
|
|
10
|
+
export { parseTcpEndpointFromUrl } from './vpc-connector-endpoint.util';
|
|
11
|
+
export { buildVpcConnectorRelayWebSocketUrl } from './vpc-connector-relay.util';
|
|
12
|
+
export { AWS_VPC_PROVISION_SERVICES, parseVpcSecurityGroupIds, requireAwsVpcEnvFields, requireVpcSecurityGroupIds, withAwsVpcProvisionParams, } from './aws-vpc-provision.util';
|
|
8
13
|
export { cloudServiceForProvider, requireCloudService } from './cloud-service-map.util';
|
|
9
14
|
export { resolveCloudConnectionId } from './cloud-api.util';
|
|
10
15
|
export type { ICloudRuntimeContext } from './cloud-runtime.util';
|
package/dist/cloud/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.resolveCloudConnectionId = exports.requireCloudService = exports.cloudServiceForProvider = exports.materializeCloudLinkedVectorEnv = exports.materializeCloudLinkedGraphEnv = exports.materializeCloudLinkedDatabaseEnv = exports.materializeCloudLinkedBrokerEnv = exports.resolveCloudLinkedEnvConfig = exports.resolveCloudLinkedConfig = exports.CloudError = exports.CloudService = void 0;
|
|
17
|
+
exports.resolveCloudConnectionId = exports.requireCloudService = exports.cloudServiceForProvider = exports.withAwsVpcProvisionParams = exports.requireVpcSecurityGroupIds = exports.requireAwsVpcEnvFields = exports.parseVpcSecurityGroupIds = exports.AWS_VPC_PROVISION_SERVICES = exports.buildVpcConnectorRelayWebSocketUrl = exports.parseTcpEndpointFromUrl = exports.buildVpcConnectorTunnelAdapterOptions = exports.openVpcConnectorTunnelStream = exports.materializeCloudLinkedVectorEnv = exports.materializeCloudLinkedGraphEnv = exports.materializeCloudLinkedDatabaseEnv = exports.materializeCloudLinkedBrokerEnv = exports.resolveCloudLinkedEnvConfig = exports.resolveCloudLinkedConfig = exports.CloudError = exports.CloudService = void 0;
|
|
18
18
|
var cloud_service_1 = require("./cloud.service");
|
|
19
19
|
Object.defineProperty(exports, "CloudService", { enumerable: true, get: function () { return cloud_service_1.CloudService; } });
|
|
20
20
|
Object.defineProperty(exports, "CloudError", { enumerable: true, get: function () { return cloud_service_1.CloudError; } });
|
|
@@ -29,6 +29,20 @@ var cloud_graph_link_util_1 = require("./cloud-graph-link.util");
|
|
|
29
29
|
Object.defineProperty(exports, "materializeCloudLinkedGraphEnv", { enumerable: true, get: function () { return cloud_graph_link_util_1.materializeCloudLinkedGraphEnv; } });
|
|
30
30
|
var cloud_vector_link_util_1 = require("./cloud-vector-link.util");
|
|
31
31
|
Object.defineProperty(exports, "materializeCloudLinkedVectorEnv", { enumerable: true, get: function () { return cloud_vector_link_util_1.materializeCloudLinkedVectorEnv; } });
|
|
32
|
+
var vpc_connector_tunnel_client_1 = require("./vpc-connector-tunnel.client");
|
|
33
|
+
Object.defineProperty(exports, "openVpcConnectorTunnelStream", { enumerable: true, get: function () { return vpc_connector_tunnel_client_1.openVpcConnectorTunnelStream; } });
|
|
34
|
+
var vpc_connector_connect_util_1 = require("./vpc-connector-connect.util");
|
|
35
|
+
Object.defineProperty(exports, "buildVpcConnectorTunnelAdapterOptions", { enumerable: true, get: function () { return vpc_connector_connect_util_1.buildVpcConnectorTunnelAdapterOptions; } });
|
|
36
|
+
var vpc_connector_endpoint_util_1 = require("./vpc-connector-endpoint.util");
|
|
37
|
+
Object.defineProperty(exports, "parseTcpEndpointFromUrl", { enumerable: true, get: function () { return vpc_connector_endpoint_util_1.parseTcpEndpointFromUrl; } });
|
|
38
|
+
var vpc_connector_relay_util_1 = require("./vpc-connector-relay.util");
|
|
39
|
+
Object.defineProperty(exports, "buildVpcConnectorRelayWebSocketUrl", { enumerable: true, get: function () { return vpc_connector_relay_util_1.buildVpcConnectorRelayWebSocketUrl; } });
|
|
40
|
+
var aws_vpc_provision_util_1 = require("./aws-vpc-provision.util");
|
|
41
|
+
Object.defineProperty(exports, "AWS_VPC_PROVISION_SERVICES", { enumerable: true, get: function () { return aws_vpc_provision_util_1.AWS_VPC_PROVISION_SERVICES; } });
|
|
42
|
+
Object.defineProperty(exports, "parseVpcSecurityGroupIds", { enumerable: true, get: function () { return aws_vpc_provision_util_1.parseVpcSecurityGroupIds; } });
|
|
43
|
+
Object.defineProperty(exports, "requireAwsVpcEnvFields", { enumerable: true, get: function () { return aws_vpc_provision_util_1.requireAwsVpcEnvFields; } });
|
|
44
|
+
Object.defineProperty(exports, "requireVpcSecurityGroupIds", { enumerable: true, get: function () { return aws_vpc_provision_util_1.requireVpcSecurityGroupIds; } });
|
|
45
|
+
Object.defineProperty(exports, "withAwsVpcProvisionParams", { enumerable: true, get: function () { return aws_vpc_provision_util_1.withAwsVpcProvisionParams; } });
|
|
32
46
|
var cloud_service_map_util_1 = require("./cloud-service-map.util");
|
|
33
47
|
Object.defineProperty(exports, "cloudServiceForProvider", { enumerable: true, get: function () { return cloud_service_map_util_1.cloudServiceForProvider; } });
|
|
34
48
|
Object.defineProperty(exports, "requireCloudService", { enumerable: true, get: function () { return cloud_service_map_util_1.requireCloudService; } });
|
package/dist/cloud/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cloud/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA2D;AAAlD,6GAAA,YAAY,OAAA;AAAE,2GAAA,UAAU,OAAA;AAEjC,2DAA6F;AAApF,8HAAA,wBAAwB,OAAA;AAAE,iIAAA,2BAA2B,OAAA;AAC9D,mEAA2E;AAAlE,yIAAA,+BAA+B,OAAA;AACxC,uEAA+E;AAAtE,6IAAA,iCAAiC,OAAA;AAC1C,iEAAyE;AAAhE,uIAAA,8BAA8B,OAAA;AACvC,mEAA2E;AAAlE,yIAAA,+BAA+B,OAAA;AACxC,mEAAwF;AAA/E,iIAAA,uBAAuB,OAAA;AAAE,6HAAA,mBAAmB,OAAA;AACrD,mDAA4D;AAAnD,0HAAA,wBAAwB,OAAA;AAEjC,0CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cloud/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA2D;AAAlD,6GAAA,YAAY,OAAA;AAAE,2GAAA,UAAU,OAAA;AAEjC,2DAA6F;AAApF,8HAAA,wBAAwB,OAAA;AAAE,iIAAA,2BAA2B,OAAA;AAC9D,mEAA2E;AAAlE,yIAAA,+BAA+B,OAAA;AACxC,uEAA+E;AAAtE,6IAAA,iCAAiC,OAAA;AAC1C,iEAAyE;AAAhE,uIAAA,8BAA8B,OAAA;AACvC,mEAA2E;AAAlE,yIAAA,+BAA+B,OAAA;AACxC,6EAA6E;AAApE,2IAAA,4BAA4B,OAAA;AACrC,2EAAqF;AAA5E,mJAAA,qCAAqC,OAAA;AAC9C,6EAAwE;AAA/D,sIAAA,uBAAuB,OAAA;AAChC,uEAAgF;AAAvE,8IAAA,kCAAkC,OAAA;AAC3C,mEAMkC;AALhC,oIAAA,0BAA0B,OAAA;AAC1B,kIAAA,wBAAwB,OAAA;AACxB,gIAAA,sBAAsB,OAAA;AACtB,oIAAA,0BAA0B,OAAA;AAC1B,mIAAA,yBAAyB,OAAA;AAE3B,mEAAwF;AAA/E,iIAAA,uBAAuB,OAAA;AAAE,6HAAA,mBAAmB,OAAA;AACrD,mDAA4D;AAAnD,0HAAA,wBAAwB,OAAA;AAEjC,0CAAwB"}
|
|
@@ -44,6 +44,70 @@ export interface IUpdateCloudConnectionInput {
|
|
|
44
44
|
description?: string;
|
|
45
45
|
scopes?: CloudConnectionScope[];
|
|
46
46
|
}
|
|
47
|
+
export type AwsSecurityGroupResourceType = 'rds' | 'neptune';
|
|
48
|
+
/** Customer-managed VPC security group registered on an AWS cloud connection */
|
|
49
|
+
export interface IAwsRegisteredSecurityGroup {
|
|
50
|
+
tag: string;
|
|
51
|
+
groupId: string;
|
|
52
|
+
resourceTypes: AwsSecurityGroupResourceType[];
|
|
53
|
+
region?: string;
|
|
54
|
+
description?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface IUpdateCloudSecurityGroupsInput {
|
|
57
|
+
security_groups: IAwsRegisteredSecurityGroup[];
|
|
58
|
+
}
|
|
59
|
+
export type CloudNetworkingMode = 'customer' | 'managed' | 'vpc_connector';
|
|
60
|
+
export interface IVpcConnectorSecurityGroupRef {
|
|
61
|
+
groupId: string;
|
|
62
|
+
region: string;
|
|
63
|
+
vpcId?: string;
|
|
64
|
+
name?: string;
|
|
65
|
+
}
|
|
66
|
+
export interface IVpcConnectorConfig {
|
|
67
|
+
vpc_id: string;
|
|
68
|
+
subnet_ids: string[];
|
|
69
|
+
region: string;
|
|
70
|
+
connector_security_group: IVpcConnectorSecurityGroupRef;
|
|
71
|
+
data_security_group: IVpcConnectorSecurityGroupRef;
|
|
72
|
+
app_security_group_ids?: string[];
|
|
73
|
+
agent_status?: 'pending' | 'connected' | 'disconnected';
|
|
74
|
+
agent_last_seen_at?: string;
|
|
75
|
+
enrollment_token?: string;
|
|
76
|
+
}
|
|
77
|
+
export interface IUpdateCloudVpcConnectorInput {
|
|
78
|
+
vpc_id: string;
|
|
79
|
+
subnet_ids: string[];
|
|
80
|
+
region?: string;
|
|
81
|
+
app_security_group_ids?: string[];
|
|
82
|
+
rotate_enrollment_token?: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface ICloudVpcConnectorStatus {
|
|
85
|
+
connection_tag: string;
|
|
86
|
+
agent_status: 'pending' | 'connected' | 'disconnected';
|
|
87
|
+
agent_last_seen_at?: string;
|
|
88
|
+
vpc_id: string;
|
|
89
|
+
region: string;
|
|
90
|
+
subnet_ids: string[];
|
|
91
|
+
connector_security_group: IVpcConnectorSecurityGroupRef;
|
|
92
|
+
data_security_group: IVpcConnectorSecurityGroupRef;
|
|
93
|
+
}
|
|
94
|
+
export interface IAllowedSourceCidr {
|
|
95
|
+
cidr: string;
|
|
96
|
+
label?: string;
|
|
97
|
+
source?: 'custom' | 'ductape_proxy' | 'detected';
|
|
98
|
+
}
|
|
99
|
+
export interface IUpdateCloudManagedNetworkingInput {
|
|
100
|
+
mode?: CloudNetworkingMode;
|
|
101
|
+
allowed_sources?: IAllowedSourceCidr[];
|
|
102
|
+
include_ductape_proxy?: boolean;
|
|
103
|
+
ductape_proxy_host?: string;
|
|
104
|
+
ductape_proxy_addresses?: string[];
|
|
105
|
+
region?: string;
|
|
106
|
+
}
|
|
107
|
+
export interface IResolveCloudHostResult {
|
|
108
|
+
host: string;
|
|
109
|
+
addresses: string[];
|
|
110
|
+
}
|
|
47
111
|
export interface ICompleteCloudConnectionInput {
|
|
48
112
|
/** AWS cross-account role */
|
|
49
113
|
role_arn?: string;
|
|
@@ -106,15 +170,40 @@ export interface IImportCloudResourceInput {
|
|
|
106
170
|
componentTag: string;
|
|
107
171
|
envSlug: string;
|
|
108
172
|
}
|
|
109
|
-
|
|
173
|
+
/** Service-specific provision fields (top-level on provision input, not nested under params). */
|
|
174
|
+
export interface ICloudProvisionFields {
|
|
175
|
+
securityGroups?: string[];
|
|
176
|
+
region?: string;
|
|
177
|
+
location?: string;
|
|
178
|
+
publiclyAccessible?: boolean;
|
|
179
|
+
instance?: string;
|
|
180
|
+
serverName?: string;
|
|
181
|
+
clusterIdentifier?: string;
|
|
182
|
+
engine?: string;
|
|
183
|
+
dbName?: string;
|
|
184
|
+
databaseName?: string;
|
|
185
|
+
bucketName?: string;
|
|
186
|
+
containerName?: string;
|
|
187
|
+
name?: string;
|
|
188
|
+
queueName?: string;
|
|
189
|
+
topicName?: string;
|
|
190
|
+
namespaceName?: string;
|
|
191
|
+
domainName?: string;
|
|
192
|
+
indexName?: string;
|
|
193
|
+
serviceName?: string;
|
|
194
|
+
accountName?: string;
|
|
195
|
+
dbSubnetGroupName?: string;
|
|
196
|
+
}
|
|
197
|
+
export interface IProvisionCloudResourceInput extends ICloudProvisionFields {
|
|
110
198
|
/** Workspace cloud connection tag */
|
|
111
199
|
cloud: string;
|
|
112
200
|
service: CloudResourceService;
|
|
113
|
-
template
|
|
201
|
+
template?: string;
|
|
114
202
|
componentType: CloudComponentType;
|
|
115
203
|
productTag: string;
|
|
116
204
|
componentTag: string;
|
|
117
205
|
envSlug: string;
|
|
206
|
+
/** @deprecated Put provision fields on the input root instead */
|
|
118
207
|
params?: Record<string, unknown>;
|
|
119
208
|
}
|
|
120
209
|
/** Partial product component returned by the connector for builder persistence */
|
|
@@ -143,10 +232,18 @@ export interface ICloudRuntimeCredentialsInput {
|
|
|
143
232
|
envSlug: string;
|
|
144
233
|
purpose?: 'runtime' | 'validate';
|
|
145
234
|
}
|
|
235
|
+
export interface ICloudRuntimeCredentialsNetworking {
|
|
236
|
+
mode?: CloudNetworkingMode;
|
|
237
|
+
vpc_connector?: {
|
|
238
|
+
cloud?: string;
|
|
239
|
+
agent_status?: 'pending' | 'connected' | 'disconnected';
|
|
240
|
+
};
|
|
241
|
+
}
|
|
146
242
|
export interface ICloudRuntimeCredentials {
|
|
147
243
|
provider: CloudProvider;
|
|
148
244
|
expiresAt: string;
|
|
149
245
|
credentials: Record<string, unknown>;
|
|
246
|
+
networking?: ICloudRuntimeCredentialsNetworking;
|
|
150
247
|
}
|
|
151
248
|
/** Optional fields on storage/broker configs when linked via cloud connection */
|
|
152
249
|
export type ComponentCloudAuthMode = 'manual' | 'cloud_connection';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IAdapterConnectionOptions } from '../database/types/connection.interface';
|
|
2
|
+
import { EnvType, IRequestExtension } from '../types';
|
|
3
|
+
export interface IVpcConnectorTunnelConnectHint {
|
|
4
|
+
useVpcConnectorTunnel?: boolean;
|
|
5
|
+
cloud?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function buildVpcConnectorTunnelAdapterOptions(hint: IVpcConnectorTunnelConnectHint, connectionUrl: string, ctx: {
|
|
8
|
+
environment: EnvType;
|
|
9
|
+
auth: IRequestExtension;
|
|
10
|
+
}): Pick<IAdapterConnectionOptions, 'vpcConnectorTunnel'>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildVpcConnectorTunnelAdapterOptions = buildVpcConnectorTunnelAdapterOptions;
|
|
4
|
+
const vpc_connector_endpoint_util_1 = require("./vpc-connector-endpoint.util");
|
|
5
|
+
function buildVpcConnectorTunnelAdapterOptions(hint, connectionUrl, ctx) {
|
|
6
|
+
if (!hint.useVpcConnectorTunnel || !hint.cloud) {
|
|
7
|
+
return {};
|
|
8
|
+
}
|
|
9
|
+
const endpoint = (0, vpc_connector_endpoint_util_1.parseTcpEndpointFromUrl)(connectionUrl);
|
|
10
|
+
if (!endpoint) {
|
|
11
|
+
return {};
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
vpcConnectorTunnel: {
|
|
15
|
+
cloudTag: hint.cloud,
|
|
16
|
+
host: endpoint.host,
|
|
17
|
+
port: endpoint.port,
|
|
18
|
+
environment: ctx.environment,
|
|
19
|
+
auth: ctx.auth,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=vpc-connector-connect.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpc-connector-connect.util.js","sourceRoot":"","sources":["../../src/cloud/vpc-connector-connect.util.ts"],"names":[],"mappings":";;AASA,sFAuBC;AA9BD,+EAAwE;AAOxE,SAAgB,qCAAqC,CACnD,IAAoC,EACpC,aAAqB,EACrB,GAAsD;IAEtD,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,qDAAuB,EAAC,aAAa,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,kBAAkB,EAAE;YAClB,QAAQ,EAAE,IAAI,CAAC,KAAK;YACpB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;SACf;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseTcpEndpointFromUrl = parseTcpEndpointFromUrl;
|
|
4
|
+
function parseTcpEndpointFromUrl(connectionUrl) {
|
|
5
|
+
try {
|
|
6
|
+
const normalized = connectionUrl.includes('://')
|
|
7
|
+
? connectionUrl
|
|
8
|
+
: `postgresql://${connectionUrl}`;
|
|
9
|
+
const parsed = new URL(normalized);
|
|
10
|
+
const host = parsed.hostname;
|
|
11
|
+
if (!host)
|
|
12
|
+
return null;
|
|
13
|
+
const port = parsed.port
|
|
14
|
+
? Number(parsed.port)
|
|
15
|
+
: parsed.protocol === 'https:' || parsed.protocol === 'wss:'
|
|
16
|
+
? 8182
|
|
17
|
+
: 5432;
|
|
18
|
+
return { host, port };
|
|
19
|
+
}
|
|
20
|
+
catch (_a) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=vpc-connector-endpoint.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpc-connector-endpoint.util.js","sourceRoot":"","sources":["../../src/cloud/vpc-connector-endpoint.util.ts"],"names":[],"mappings":";;AAAA,0DAiBC;AAjBD,SAAgB,uBAAuB,CAAC,aAAqB;IAC3D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC9C,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,gBAAgB,aAAa,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;YACtB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM;gBAC1D,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildVpcConnectorRelayWebSocketUrl = buildVpcConnectorRelayWebSocketUrl;
|
|
4
|
+
const urls_1 = require("../api/urls");
|
|
5
|
+
const urls_2 = require("../api/urls");
|
|
6
|
+
/** Builds the VPC connector relay WebSocket URL used by hosted proxy / SDK database connects. */
|
|
7
|
+
function buildVpcConnectorRelayWebSocketUrl(environment, auth) {
|
|
8
|
+
const base = (0, urls_1.getUrlForEnvironment)(environment, 'integrations');
|
|
9
|
+
const wsBase = base.replace(/^http/i, 'ws');
|
|
10
|
+
const params = new URLSearchParams({
|
|
11
|
+
workspace_id: auth.workspace_id,
|
|
12
|
+
public_key: auth.public_key,
|
|
13
|
+
user_id: auth.user_id,
|
|
14
|
+
});
|
|
15
|
+
return `${wsBase}${urls_2.CLOUD_VPC_CONNECTOR_RELAY_WS_PATH}?${params.toString()}`;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=vpc-connector-relay.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpc-connector-relay.util.js","sourceRoot":"","sources":["../../src/cloud/vpc-connector-relay.util.ts"],"names":[],"mappings":";;AAKA,gFAYC;AAjBD,sCAAmD;AACnD,sCAAgE;AAGhE,iGAAiG;AACjG,SAAgB,kCAAkC,CAChD,WAAoB,EACpB,IAAuB;IAEvB,MAAM,IAAI,GAAG,IAAA,2BAAoB,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IACH,OAAO,GAAG,MAAM,GAAG,wCAAiC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Duplex } from 'stream';
|
|
2
|
+
import { EnvType, IRequestExtension } from '../types';
|
|
3
|
+
export interface IVpcConnectorTunnelTarget {
|
|
4
|
+
cloudTag: string;
|
|
5
|
+
host: string;
|
|
6
|
+
port: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Opens a TCP stream to a private VPC host via the Ductape VPC connector relay.
|
|
10
|
+
* Used by hosted proxy / SDK when cloud connection networking mode is vpc_connector.
|
|
11
|
+
*/
|
|
12
|
+
export declare function openVpcConnectorTunnelStream(target: IVpcConnectorTunnelTarget, ctx: {
|
|
13
|
+
environment: EnvType;
|
|
14
|
+
auth: IRequestExtension;
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
}): Promise<Duplex>;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.openVpcConnectorTunnelStream = openVpcConnectorTunnelStream;
|
|
37
|
+
const stream_1 = require("stream");
|
|
38
|
+
const vpc_connector_relay_util_1 = require("./vpc-connector-relay.util");
|
|
39
|
+
function relayWebSocketUrl(environment, auth) {
|
|
40
|
+
return (0, vpc_connector_relay_util_1.buildVpcConnectorRelayWebSocketUrl)(environment, auth);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Opens a TCP stream to a private VPC host via the Ductape VPC connector relay.
|
|
44
|
+
* Used by hosted proxy / SDK when cloud connection networking mode is vpc_connector.
|
|
45
|
+
*/
|
|
46
|
+
async function openVpcConnectorTunnelStream(target, ctx) {
|
|
47
|
+
var _a;
|
|
48
|
+
const { default: WebSocket, OPEN } = await Promise.resolve().then(() => __importStar(require('ws')));
|
|
49
|
+
const wsUrl = relayWebSocketUrl(ctx.environment, ctx.auth);
|
|
50
|
+
const streamId = `relay_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;
|
|
51
|
+
const timeoutMs = (_a = ctx.timeoutMs) !== null && _a !== void 0 ? _a : 20000;
|
|
52
|
+
const ws = new WebSocket(wsUrl);
|
|
53
|
+
await new Promise((resolve, reject) => {
|
|
54
|
+
const timer = setTimeout(() => reject(new Error('VPC connector relay WebSocket timed out')), timeoutMs);
|
|
55
|
+
ws.once('open', () => {
|
|
56
|
+
clearTimeout(timer);
|
|
57
|
+
resolve();
|
|
58
|
+
});
|
|
59
|
+
ws.once('error', (error) => {
|
|
60
|
+
clearTimeout(timer);
|
|
61
|
+
reject(error);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
const stream = new stream_1.Duplex({
|
|
65
|
+
read() { },
|
|
66
|
+
write(chunk, _encoding, callback) {
|
|
67
|
+
if (ws.readyState !== OPEN) {
|
|
68
|
+
callback(new Error('VPC connector relay socket is not open'));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
ws.send(JSON.stringify({
|
|
72
|
+
type: 'stream_data',
|
|
73
|
+
stream_id: streamId,
|
|
74
|
+
data: Buffer.from(chunk).toString('base64'),
|
|
75
|
+
}));
|
|
76
|
+
callback();
|
|
77
|
+
},
|
|
78
|
+
destroy(error, callback) {
|
|
79
|
+
if (ws.readyState === OPEN) {
|
|
80
|
+
ws.send(JSON.stringify({ type: 'stream_close', stream_id: streamId }));
|
|
81
|
+
}
|
|
82
|
+
ws.close();
|
|
83
|
+
callback(error !== null && error !== void 0 ? error : undefined);
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
await new Promise((resolve, reject) => {
|
|
87
|
+
const timer = setTimeout(() => reject(new Error('VPC connector stream open timed out')), timeoutMs);
|
|
88
|
+
const onMessage = (raw) => {
|
|
89
|
+
let message;
|
|
90
|
+
try {
|
|
91
|
+
message = JSON.parse(raw.toString());
|
|
92
|
+
}
|
|
93
|
+
catch (_a) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (message.stream_id !== streamId)
|
|
97
|
+
return;
|
|
98
|
+
const type = String(message.type || '');
|
|
99
|
+
if (type === 'stream_opened') {
|
|
100
|
+
clearTimeout(timer);
|
|
101
|
+
ws.off('message', onMessage);
|
|
102
|
+
resolve();
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (type === 'stream_data' && typeof message.data === 'string') {
|
|
106
|
+
stream.push(Buffer.from(message.data, 'base64'));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (type === 'stream_error') {
|
|
110
|
+
clearTimeout(timer);
|
|
111
|
+
ws.off('message', onMessage);
|
|
112
|
+
reject(new Error(String(message.message || 'VPC connector stream error')));
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (type === 'stream_close') {
|
|
116
|
+
stream.push(null);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
ws.on('message', onMessage);
|
|
120
|
+
ws.send(JSON.stringify({
|
|
121
|
+
type: 'stream_open',
|
|
122
|
+
stream_id: streamId,
|
|
123
|
+
cloud_tag: target.cloudTag,
|
|
124
|
+
host: target.host,
|
|
125
|
+
port: target.port,
|
|
126
|
+
}));
|
|
127
|
+
});
|
|
128
|
+
ws.on('message', (raw) => {
|
|
129
|
+
let message;
|
|
130
|
+
try {
|
|
131
|
+
message = JSON.parse(raw.toString());
|
|
132
|
+
}
|
|
133
|
+
catch (_a) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (message.stream_id !== streamId)
|
|
137
|
+
return;
|
|
138
|
+
if (message.type === 'stream_data' && typeof message.data === 'string') {
|
|
139
|
+
stream.push(Buffer.from(message.data, 'base64'));
|
|
140
|
+
}
|
|
141
|
+
if (message.type === 'stream_close') {
|
|
142
|
+
stream.push(null);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
ws.on('close', () => stream.destroy());
|
|
146
|
+
ws.on('error', (error) => stream.destroy(error));
|
|
147
|
+
return stream;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=vpc-connector-tunnel.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpc-connector-tunnel.client.js","sourceRoot":"","sources":["../../src/cloud/vpc-connector-tunnel.client.ts"],"names":[],"mappings":"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"}
|