Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@deepnote/database-integrations

Package Overview
Dependencies
Maintainers
4
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@deepnote/database-integrations - npm Package Compare versions

Comparing version
1.1.1
to
1.2.0
+361
-217
dist/index.cjs

@@ -64,2 +64,328 @@ //#region rolldown:runtime

//#endregion
//#region src/database-integration-metadata-schemas.ts
const athenaMetadataSchema = zod.z.object({
access_key_id: zod.z.string(),
region: zod.z.string(),
s3_output_path: zod.z.string(),
secret_access_key: zod.z.string(),
workgroup: zod.z.string().optional()
});
const bigqueryMetadataSchema = zod.z.discriminatedUnion("authMethod", [zod.z.object({
authMethod: zod.z.literal(BigQueryAuthMethods.ServiceAccount),
service_account: zod.z.string()
}), zod.z.object({
authMethod: zod.z.literal(BigQueryAuthMethods.GoogleOauth),
project: zod.z.string(),
clientId: zod.z.string(),
clientSecret: zod.z.string()
})]);
const clickhouseMetadataSchema = zod.z.object({
host: zod.z.string(),
user: zod.z.string(),
password: zod.z.string().optional(),
database: zod.z.string(),
port: zod.z.string().optional(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const databricksMetadataSchema = zod.z.object({
host: zod.z.string(),
httpPath: zod.z.string(),
token: zod.z.string(),
port: zod.z.string(),
schema: zod.z.string().optional(),
catalog: zod.z.string().optional(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional()
});
const dremioMetadataSchema = zod.z.object({
schema: zod.z.string(),
host: zod.z.string(),
port: zod.z.string(),
token: zod.z.string(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional()
});
const mongodbMetadataSchema = zod.z.object({
connection_string: zod.z.string(),
rawConnectionString: zod.z.string().optional(),
prefix: zod.z.string().optional(),
host: zod.z.string().optional(),
port: zod.z.string().optional(),
user: zod.z.string().optional(),
password: zod.z.string().optional(),
database: zod.z.string().optional(),
options: zod.z.string().optional(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const pandasDataframeMetadataSchema = zod.z.object({});
const commonRedshiftMetadataSchema = zod.z.object({
database: zod.z.string(),
host: zod.z.string(),
port: zod.z.string().optional(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const redshiftMetadataSchema = zod.z.discriminatedUnion("authMethod", [
commonRedshiftMetadataSchema.extend({
authMethod: zod.z.literal(DatabaseAuthMethods.UsernameAndPassword),
user: zod.z.string(),
password: zod.z.string()
}),
commonRedshiftMetadataSchema.extend({
authMethod: zod.z.literal(AwsAuthMethods.IamRole),
roleArn: zod.z.string(),
roleExternalId: zod.z.string(),
roleNonce: zod.z.string()
}),
commonRedshiftMetadataSchema.extend({ authMethod: zod.z.literal(DatabaseAuthMethods.IndividualCredentials) })
]);
const commonSnowflakeMetadataSchema = zod.z.object({
accountName: zod.z.string(),
warehouse: zod.z.string().optional(),
database: zod.z.string().optional(),
role: zod.z.string().optional()
});
const snowflakeMetadataSchema = zod.z.discriminatedUnion("authMethod", [
commonSnowflakeMetadataSchema.extend({
authMethod: zod.z.literal(SnowflakeAuthMethods.Password),
username: zod.z.string(),
password: zod.z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: zod.z.literal(SnowflakeAuthMethods.Okta),
clientId: zod.z.string(),
clientSecret: zod.z.string(),
oktaSubdomain: zod.z.string(),
identityProvider: zod.z.string(),
authorizationServer: zod.z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: zod.z.literal(SnowflakeAuthMethods.NativeSnowflake),
clientId: zod.z.string(),
clientSecret: zod.z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: zod.z.literal(SnowflakeAuthMethods.AzureAd),
clientId: zod.z.string(),
clientSecret: zod.z.string(),
resource: zod.z.string(),
tenant: zod.z.string()
}),
commonSnowflakeMetadataSchema.extend({ authMethod: zod.z.literal(SnowflakeAuthMethods.KeyPair) }),
commonSnowflakeMetadataSchema.extend({
authMethod: zod.z.literal(SnowflakeAuthMethods.ServiceAccountKeyPair),
username: zod.z.string(),
privateKey: zod.z.string(),
privateKeyPassphrase: zod.z.string().optional()
})
]);
const spannerMetadataSchema = zod.z.object({
service_account: zod.z.string(),
dataBoostEnabled: zod.z.boolean(),
instance: zod.z.string(),
database: zod.z.string()
});
const trinoMetadataSchema = zod.z.object({
host: zod.z.string(),
user: zod.z.string(),
password: zod.z.string(),
database: zod.z.string(),
port: zod.z.string(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const commonDatabaseSchema = zod.z.object({
host: zod.z.string(),
user: zod.z.string(),
password: zod.z.string(),
database: zod.z.string(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional()
});
const alloydbMetadataSchema = commonDatabaseSchema.extend({
port: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const mariadbMetadataSchema = commonDatabaseSchema.extend({
port: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const mindsdbMetadataSchema = commonDatabaseSchema.extend({
port: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const mysqlMetadataSchema = commonDatabaseSchema.extend({
port: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const pgsqlMetadataSchema = commonDatabaseSchema.extend({
port: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const materializeMetadataSchema = pgsqlMetadataSchema.extend({ cluster: zod.z.string() });
const sqlServerMetadataSchema = commonDatabaseSchema.extend({ port: zod.z.string() });
const databaseMetadataSchemasByType = {
"alloydb": alloydbMetadataSchema,
"athena": athenaMetadataSchema,
"big-query": bigqueryMetadataSchema,
"clickhouse": clickhouseMetadataSchema,
"databricks": databricksMetadataSchema,
"dremio": dremioMetadataSchema,
"mariadb": mariadbMetadataSchema,
"materialize": materializeMetadataSchema,
"mindsdb": mindsdbMetadataSchema,
"mongodb": mongodbMetadataSchema,
"mysql": mysqlMetadataSchema,
"pandas-dataframe": pandasDataframeMetadataSchema,
"pgsql": pgsqlMetadataSchema,
"redshift": redshiftMetadataSchema,
"snowflake": snowflakeMetadataSchema,
"spanner": spannerMetadataSchema,
"sql-server": sqlServerMetadataSchema,
"trino": trinoMetadataSchema
};
//#endregion
//#region src/database-integration-config.ts
const commonIntegrationConfig = zod.default.object({
id: zod.default.string(),
name: zod.default.string()
});
const databaseIntegrationConfigSchema = zod.default.discriminatedUnion("type", [
commonIntegrationConfig.extend({
type: zod.default.literal("alloydb"),
metadata: databaseMetadataSchemasByType["alloydb"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("athena"),
metadata: databaseMetadataSchemasByType["athena"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("big-query"),
metadata: databaseMetadataSchemasByType["big-query"],
federated_auth_method: zod.default.enum(["google-oauth"]).optional().nullable()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("clickhouse"),
metadata: databaseMetadataSchemasByType["clickhouse"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("databricks"),
metadata: databaseMetadataSchemasByType["databricks"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("dremio"),
metadata: databaseMetadataSchemasByType["dremio"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("mariadb"),
metadata: databaseMetadataSchemasByType["mariadb"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("materialize"),
metadata: databaseMetadataSchemasByType["materialize"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("mindsdb"),
metadata: databaseMetadataSchemasByType["mindsdb"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("mongodb"),
metadata: databaseMetadataSchemasByType["mongodb"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("mysql"),
metadata: databaseMetadataSchemasByType["mysql"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("pandas-dataframe"),
metadata: databaseMetadataSchemasByType["pandas-dataframe"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("pgsql"),
metadata: databaseMetadataSchemasByType["pgsql"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("redshift"),
metadata: databaseMetadataSchemasByType["redshift"],
federated_auth_method: zod.default.enum(["individual-credentials"]).optional().nullable()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("snowflake"),
metadata: databaseMetadataSchemasByType["snowflake"],
federated_auth_method: zod.default.enum([
"okta",
"snowflake",
"azure",
"key-pair"
]).optional().nullable()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("spanner"),
metadata: databaseMetadataSchemasByType["spanner"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("sql-server"),
metadata: databaseMetadataSchemasByType["sql-server"],
federated_auth_method: zod.default.null().optional()
}),
commonIntegrationConfig.extend({
type: zod.default.literal("trino"),
metadata: databaseMetadataSchemasByType["trino"],
federated_auth_method: zod.default.null().optional()
})
]);
//#endregion
//#region src/snowflake-integration-env-vars.ts

@@ -96,2 +422,18 @@ /**

}
function getSnowflakeFederatedAuthSqlAlchemyInput(metadata, options = {}) {
return createSqlAlchemyInputFromUrl(buildSnowflakeUrlForFederatedAuth(metadata, options), options.keyPair);
}
function buildSnowflakeUrlForFederatedAuth(metadata, options) {
const queryParams = { ...createBaseQueryParams(metadata, options.snowflakePartnerIdentifier) };
if (options.role) queryParams.role = options.role;
if (options.accessToken) {
queryParams.token = options.accessToken;
queryParams.authenticator = "oauth";
}
const accountIdentifier = metadata.accountName.replace(".privatelink", "");
return buildUrl(options.keyPair?.username ? `snowflake://${encodeURIComponent(options.keyPair.username)}@${encodeURIComponent(accountIdentifier)}` : `snowflake://:@${encodeURIComponent(accountIdentifier)}`, {
path: metadata.database,
queryParams
});
}
function createBaseQueryParams(metadata, snowflakePartnerIdentifier) {

@@ -122,3 +464,5 @@ return {

const namePrefix = convertToEnvironmentVariableName(integration.name);
const envVarsForThisIntegration = Object.entries(integration.metadata).map(([key, rawValue]) => {
const envVarsForThisIntegration = Object.entries(integration.metadata).filter(([key]) => {
return key !== "caCertificateText";
}).map(([key, rawValue]) => {
const name = `${namePrefix}_${key.toUpperCase()}`;

@@ -476,218 +820,2 @@ const value = String(rawValue);

//#endregion
//#region src/database-integration-metadata-schemas.ts
const athenaMetadataSchema = zod.z.object({
access_key_id: zod.z.string(),
region: zod.z.string(),
s3_output_path: zod.z.string(),
secret_access_key: zod.z.string(),
workgroup: zod.z.string().optional()
});
const bigqueryMetadataSchema = zod.z.discriminatedUnion("authMethod", [zod.z.object({
authMethod: zod.z.literal(BigQueryAuthMethods.ServiceAccount),
service_account: zod.z.string()
}), zod.z.object({
authMethod: zod.z.literal(BigQueryAuthMethods.GoogleOauth),
project: zod.z.string(),
clientId: zod.z.string(),
clientSecret: zod.z.string()
})]);
const clickhouseMetadataSchema = zod.z.object({
host: zod.z.string(),
user: zod.z.string(),
password: zod.z.string().optional(),
database: zod.z.string(),
port: zod.z.string().optional(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const databricksMetadataSchema = zod.z.object({
host: zod.z.string(),
httpPath: zod.z.string(),
token: zod.z.string(),
port: zod.z.string(),
schema: zod.z.string().optional(),
catalog: zod.z.string().optional(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional()
});
const dremioMetadataSchema = zod.z.object({
schema: zod.z.string(),
host: zod.z.string(),
port: zod.z.string(),
token: zod.z.string(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional()
});
const mongodbMetadataSchema = zod.z.object({
connection_string: zod.z.string(),
rawConnectionString: zod.z.string().optional(),
prefix: zod.z.string().optional(),
host: zod.z.string().optional(),
port: zod.z.string().optional(),
user: zod.z.string().optional(),
password: zod.z.string().optional(),
database: zod.z.string().optional(),
options: zod.z.string().optional(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const pandasDataframeMetadataSchema = zod.z.object({});
const commonRedshiftMetadataSchema = zod.z.object({
database: zod.z.string(),
host: zod.z.string(),
port: zod.z.string().optional(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const redshiftMetadataSchema = zod.z.discriminatedUnion("authMethod", [
commonRedshiftMetadataSchema.extend({
authMethod: zod.z.literal(DatabaseAuthMethods.UsernameAndPassword),
user: zod.z.string(),
password: zod.z.string()
}),
commonRedshiftMetadataSchema.extend({
authMethod: zod.z.literal(AwsAuthMethods.IamRole),
roleArn: zod.z.string(),
roleExternalId: zod.z.string(),
roleNonce: zod.z.string()
}),
commonRedshiftMetadataSchema.extend({ authMethod: zod.z.literal(DatabaseAuthMethods.IndividualCredentials) })
]);
const commonSnowflakeMetadataSchema = zod.z.object({
accountName: zod.z.string(),
warehouse: zod.z.string().optional(),
database: zod.z.string().optional(),
role: zod.z.string().optional()
});
const snowflakeMetadataSchema = zod.z.discriminatedUnion("authMethod", [
commonSnowflakeMetadataSchema.extend({
authMethod: zod.z.literal(SnowflakeAuthMethods.Password),
username: zod.z.string(),
password: zod.z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: zod.z.literal(SnowflakeAuthMethods.Okta),
clientId: zod.z.string(),
clientSecret: zod.z.string(),
oktaSubdomain: zod.z.string(),
identityProvider: zod.z.string(),
authorizationServer: zod.z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: zod.z.literal(SnowflakeAuthMethods.NativeSnowflake),
clientId: zod.z.string(),
clientSecret: zod.z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: zod.z.literal(SnowflakeAuthMethods.AzureAd),
clientId: zod.z.string(),
clientSecret: zod.z.string(),
resource: zod.z.string(),
tenant: zod.z.string()
}),
commonSnowflakeMetadataSchema.extend({ authMethod: zod.z.literal(SnowflakeAuthMethods.KeyPair) }),
commonSnowflakeMetadataSchema.extend({
authMethod: zod.z.literal(SnowflakeAuthMethods.ServiceAccountKeyPair),
username: zod.z.string(),
privateKey: zod.z.string(),
privateKeyPassphrase: zod.z.string().optional()
})
]);
const spannerMetadataSchema = zod.z.object({
service_account: zod.z.string(),
dataBoostEnabled: zod.z.boolean(),
instance: zod.z.string(),
database: zod.z.string()
});
const trinoMetadataSchema = zod.z.object({
host: zod.z.string(),
user: zod.z.string(),
password: zod.z.string(),
database: zod.z.string(),
port: zod.z.string(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const commonDatabaseSchema = zod.z.object({
host: zod.z.string(),
user: zod.z.string(),
password: zod.z.string(),
database: zod.z.string(),
sshEnabled: zod.z.boolean().optional(),
sshHost: zod.z.string().optional(),
sshPort: zod.z.string().optional(),
sshUser: zod.z.string().optional()
});
const alloydbMetadataSchema = commonDatabaseSchema.extend({
port: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const mariadbMetadataSchema = commonDatabaseSchema.extend({
port: zod.z.string().optional(),
caCertificateName: zod.z.string().optional()
});
const mindsdbMetadataSchema = commonDatabaseSchema.extend({
port: zod.z.string().optional(),
caCertificateName: zod.z.string().optional()
});
const mysqlMetadataSchema = commonDatabaseSchema.extend({
port: zod.z.string().optional(),
caCertificateName: zod.z.string().optional()
});
const pgsqlMetadataSchema = commonDatabaseSchema.extend({
port: zod.z.string().optional(),
sslEnabled: zod.z.boolean().optional(),
caCertificateName: zod.z.string().optional(),
caCertificateText: zod.z.string().optional()
});
const materializeMetadataSchema = pgsqlMetadataSchema.extend({ cluster: zod.z.string() });
const sqlServerMetadataSchema = commonDatabaseSchema.extend({ port: zod.z.string() });
const databaseMetadataSchemasByType = {
"alloydb": alloydbMetadataSchema,
"athena": athenaMetadataSchema,
"big-query": bigqueryMetadataSchema,
"clickhouse": clickhouseMetadataSchema,
"databricks": databricksMetadataSchema,
"dremio": dremioMetadataSchema,
"mariadb": mariadbMetadataSchema,
"materialize": materializeMetadataSchema,
"mindsdb": mindsdbMetadataSchema,
"mongodb": mongodbMetadataSchema,
"mysql": mysqlMetadataSchema,
"pandas-dataframe": pandasDataframeMetadataSchema,
"pgsql": pgsqlMetadataSchema,
"redshift": redshiftMetadataSchema,
"snowflake": snowflakeMetadataSchema,
"spanner": spannerMetadataSchema,
"sql-server": sqlServerMetadataSchema,
"trino": trinoMetadataSchema
};
//#endregion
//#region src/database-integration-types.ts

@@ -715,2 +843,3 @@ const sqlIntegrationTypes = [

const databaseIntegrationTypesWithSslSupport = [
"alloydb",
"clickhouse",

@@ -726,2 +855,11 @@ "dremio",

];
function isDatabaseIntegrationType(type) {
return databaseIntegrationTypes.includes(type);
}
function isSqlIntegrationType(type) {
return sqlIntegrationTypes.includes(type);
}
function isDatabaseIntegrationTypeWithSslSupport(type) {
return databaseIntegrationTypesWithSslSupport.includes(type);
}

@@ -735,9 +873,15 @@ //#endregion

exports.SpannerServiceAccountParseError = SpannerServiceAccountParseError;
exports.databaseIntegrationConfigSchema = databaseIntegrationConfigSchema;
exports.databaseIntegrationTypes = databaseIntegrationTypes;
exports.databaseIntegrationTypesWithSslSupport = databaseIntegrationTypesWithSslSupport;
exports.databaseMetadataSchemasByType = databaseMetadataSchemasByType;
exports.federatedAuthMethods = federatedAuthMethods;
exports.getEnvironmentVariablesForIntegrations = getEnvironmentVariablesForIntegrations;
exports.getSnowflakeFederatedAuthSqlAlchemyInput = getSnowflakeFederatedAuthSqlAlchemyInput;
exports.getSqlAlchemyInput = getSqlAlchemyInput;
exports.isDatabaseIntegrationType = isDatabaseIntegrationType;
exports.isDatabaseIntegrationTypeWithSslSupport = isDatabaseIntegrationTypeWithSslSupport;
exports.isFederatedAuthMetadata = isFederatedAuthMetadata;
exports.isFederatedAuthMethod = isFederatedAuthMethod;
exports.isSqlIntegrationType = isSqlIntegrationType;
exports.sqlIntegrationTypes = sqlIntegrationTypes;

@@ -1,2 +0,2 @@

import { z } from "zod";
import z$1, { z } from "zod";

@@ -40,2 +40,328 @@ //#region src/sql-integration-auth-methods.ts

//#endregion
//#region src/database-integration-metadata-schemas.ts
const athenaMetadataSchema = z.object({
access_key_id: z.string(),
region: z.string(),
s3_output_path: z.string(),
secret_access_key: z.string(),
workgroup: z.string().optional()
});
const bigqueryMetadataSchema = z.discriminatedUnion("authMethod", [z.object({
authMethod: z.literal(BigQueryAuthMethods.ServiceAccount),
service_account: z.string()
}), z.object({
authMethod: z.literal(BigQueryAuthMethods.GoogleOauth),
project: z.string(),
clientId: z.string(),
clientSecret: z.string()
})]);
const clickhouseMetadataSchema = z.object({
host: z.string(),
user: z.string(),
password: z.string().optional(),
database: z.string(),
port: z.string().optional(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const databricksMetadataSchema = z.object({
host: z.string(),
httpPath: z.string(),
token: z.string(),
port: z.string(),
schema: z.string().optional(),
catalog: z.string().optional(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional()
});
const dremioMetadataSchema = z.object({
schema: z.string(),
host: z.string(),
port: z.string(),
token: z.string(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional()
});
const mongodbMetadataSchema = z.object({
connection_string: z.string(),
rawConnectionString: z.string().optional(),
prefix: z.string().optional(),
host: z.string().optional(),
port: z.string().optional(),
user: z.string().optional(),
password: z.string().optional(),
database: z.string().optional(),
options: z.string().optional(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const pandasDataframeMetadataSchema = z.object({});
const commonRedshiftMetadataSchema = z.object({
database: z.string(),
host: z.string(),
port: z.string().optional(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const redshiftMetadataSchema = z.discriminatedUnion("authMethod", [
commonRedshiftMetadataSchema.extend({
authMethod: z.literal(DatabaseAuthMethods.UsernameAndPassword),
user: z.string(),
password: z.string()
}),
commonRedshiftMetadataSchema.extend({
authMethod: z.literal(AwsAuthMethods.IamRole),
roleArn: z.string(),
roleExternalId: z.string(),
roleNonce: z.string()
}),
commonRedshiftMetadataSchema.extend({ authMethod: z.literal(DatabaseAuthMethods.IndividualCredentials) })
]);
const commonSnowflakeMetadataSchema = z.object({
accountName: z.string(),
warehouse: z.string().optional(),
database: z.string().optional(),
role: z.string().optional()
});
const snowflakeMetadataSchema = z.discriminatedUnion("authMethod", [
commonSnowflakeMetadataSchema.extend({
authMethod: z.literal(SnowflakeAuthMethods.Password),
username: z.string(),
password: z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: z.literal(SnowflakeAuthMethods.Okta),
clientId: z.string(),
clientSecret: z.string(),
oktaSubdomain: z.string(),
identityProvider: z.string(),
authorizationServer: z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: z.literal(SnowflakeAuthMethods.NativeSnowflake),
clientId: z.string(),
clientSecret: z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: z.literal(SnowflakeAuthMethods.AzureAd),
clientId: z.string(),
clientSecret: z.string(),
resource: z.string(),
tenant: z.string()
}),
commonSnowflakeMetadataSchema.extend({ authMethod: z.literal(SnowflakeAuthMethods.KeyPair) }),
commonSnowflakeMetadataSchema.extend({
authMethod: z.literal(SnowflakeAuthMethods.ServiceAccountKeyPair),
username: z.string(),
privateKey: z.string(),
privateKeyPassphrase: z.string().optional()
})
]);
const spannerMetadataSchema = z.object({
service_account: z.string(),
dataBoostEnabled: z.boolean(),
instance: z.string(),
database: z.string()
});
const trinoMetadataSchema = z.object({
host: z.string(),
user: z.string(),
password: z.string(),
database: z.string(),
port: z.string(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const commonDatabaseSchema = z.object({
host: z.string(),
user: z.string(),
password: z.string(),
database: z.string(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional()
});
const alloydbMetadataSchema = commonDatabaseSchema.extend({
port: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const mariadbMetadataSchema = commonDatabaseSchema.extend({
port: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const mindsdbMetadataSchema = commonDatabaseSchema.extend({
port: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const mysqlMetadataSchema = commonDatabaseSchema.extend({
port: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const pgsqlMetadataSchema = commonDatabaseSchema.extend({
port: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const materializeMetadataSchema = pgsqlMetadataSchema.extend({ cluster: z.string() });
const sqlServerMetadataSchema = commonDatabaseSchema.extend({ port: z.string() });
const databaseMetadataSchemasByType = {
"alloydb": alloydbMetadataSchema,
"athena": athenaMetadataSchema,
"big-query": bigqueryMetadataSchema,
"clickhouse": clickhouseMetadataSchema,
"databricks": databricksMetadataSchema,
"dremio": dremioMetadataSchema,
"mariadb": mariadbMetadataSchema,
"materialize": materializeMetadataSchema,
"mindsdb": mindsdbMetadataSchema,
"mongodb": mongodbMetadataSchema,
"mysql": mysqlMetadataSchema,
"pandas-dataframe": pandasDataframeMetadataSchema,
"pgsql": pgsqlMetadataSchema,
"redshift": redshiftMetadataSchema,
"snowflake": snowflakeMetadataSchema,
"spanner": spannerMetadataSchema,
"sql-server": sqlServerMetadataSchema,
"trino": trinoMetadataSchema
};
//#endregion
//#region src/database-integration-config.ts
const commonIntegrationConfig = z$1.object({
id: z$1.string(),
name: z$1.string()
});
const databaseIntegrationConfigSchema = z$1.discriminatedUnion("type", [
commonIntegrationConfig.extend({
type: z$1.literal("alloydb"),
metadata: databaseMetadataSchemasByType["alloydb"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("athena"),
metadata: databaseMetadataSchemasByType["athena"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("big-query"),
metadata: databaseMetadataSchemasByType["big-query"],
federated_auth_method: z$1.enum(["google-oauth"]).optional().nullable()
}),
commonIntegrationConfig.extend({
type: z$1.literal("clickhouse"),
metadata: databaseMetadataSchemasByType["clickhouse"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("databricks"),
metadata: databaseMetadataSchemasByType["databricks"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("dremio"),
metadata: databaseMetadataSchemasByType["dremio"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("mariadb"),
metadata: databaseMetadataSchemasByType["mariadb"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("materialize"),
metadata: databaseMetadataSchemasByType["materialize"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("mindsdb"),
metadata: databaseMetadataSchemasByType["mindsdb"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("mongodb"),
metadata: databaseMetadataSchemasByType["mongodb"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("mysql"),
metadata: databaseMetadataSchemasByType["mysql"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("pandas-dataframe"),
metadata: databaseMetadataSchemasByType["pandas-dataframe"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("pgsql"),
metadata: databaseMetadataSchemasByType["pgsql"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("redshift"),
metadata: databaseMetadataSchemasByType["redshift"],
federated_auth_method: z$1.enum(["individual-credentials"]).optional().nullable()
}),
commonIntegrationConfig.extend({
type: z$1.literal("snowflake"),
metadata: databaseMetadataSchemasByType["snowflake"],
federated_auth_method: z$1.enum([
"okta",
"snowflake",
"azure",
"key-pair"
]).optional().nullable()
}),
commonIntegrationConfig.extend({
type: z$1.literal("spanner"),
metadata: databaseMetadataSchemasByType["spanner"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("sql-server"),
metadata: databaseMetadataSchemasByType["sql-server"],
federated_auth_method: z$1.null().optional()
}),
commonIntegrationConfig.extend({
type: z$1.literal("trino"),
metadata: databaseMetadataSchemasByType["trino"],
federated_auth_method: z$1.null().optional()
})
]);
//#endregion
//#region src/snowflake-integration-env-vars.ts

@@ -72,2 +398,18 @@ /**

}
function getSnowflakeFederatedAuthSqlAlchemyInput(metadata, options = {}) {
return createSqlAlchemyInputFromUrl(buildSnowflakeUrlForFederatedAuth(metadata, options), options.keyPair);
}
function buildSnowflakeUrlForFederatedAuth(metadata, options) {
const queryParams = { ...createBaseQueryParams(metadata, options.snowflakePartnerIdentifier) };
if (options.role) queryParams.role = options.role;
if (options.accessToken) {
queryParams.token = options.accessToken;
queryParams.authenticator = "oauth";
}
const accountIdentifier = metadata.accountName.replace(".privatelink", "");
return buildUrl(options.keyPair?.username ? `snowflake://${encodeURIComponent(options.keyPair.username)}@${encodeURIComponent(accountIdentifier)}` : `snowflake://:@${encodeURIComponent(accountIdentifier)}`, {
path: metadata.database,
queryParams
});
}
function createBaseQueryParams(metadata, snowflakePartnerIdentifier) {

@@ -98,3 +440,5 @@ return {

const namePrefix = convertToEnvironmentVariableName(integration.name);
const envVarsForThisIntegration = Object.entries(integration.metadata).map(([key, rawValue]) => {
const envVarsForThisIntegration = Object.entries(integration.metadata).filter(([key]) => {
return key !== "caCertificateText";
}).map(([key, rawValue]) => {
const name = `${namePrefix}_${key.toUpperCase()}`;

@@ -452,218 +796,2 @@ const value = String(rawValue);

//#endregion
//#region src/database-integration-metadata-schemas.ts
const athenaMetadataSchema = z.object({
access_key_id: z.string(),
region: z.string(),
s3_output_path: z.string(),
secret_access_key: z.string(),
workgroup: z.string().optional()
});
const bigqueryMetadataSchema = z.discriminatedUnion("authMethod", [z.object({
authMethod: z.literal(BigQueryAuthMethods.ServiceAccount),
service_account: z.string()
}), z.object({
authMethod: z.literal(BigQueryAuthMethods.GoogleOauth),
project: z.string(),
clientId: z.string(),
clientSecret: z.string()
})]);
const clickhouseMetadataSchema = z.object({
host: z.string(),
user: z.string(),
password: z.string().optional(),
database: z.string(),
port: z.string().optional(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const databricksMetadataSchema = z.object({
host: z.string(),
httpPath: z.string(),
token: z.string(),
port: z.string(),
schema: z.string().optional(),
catalog: z.string().optional(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional()
});
const dremioMetadataSchema = z.object({
schema: z.string(),
host: z.string(),
port: z.string(),
token: z.string(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional()
});
const mongodbMetadataSchema = z.object({
connection_string: z.string(),
rawConnectionString: z.string().optional(),
prefix: z.string().optional(),
host: z.string().optional(),
port: z.string().optional(),
user: z.string().optional(),
password: z.string().optional(),
database: z.string().optional(),
options: z.string().optional(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const pandasDataframeMetadataSchema = z.object({});
const commonRedshiftMetadataSchema = z.object({
database: z.string(),
host: z.string(),
port: z.string().optional(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const redshiftMetadataSchema = z.discriminatedUnion("authMethod", [
commonRedshiftMetadataSchema.extend({
authMethod: z.literal(DatabaseAuthMethods.UsernameAndPassword),
user: z.string(),
password: z.string()
}),
commonRedshiftMetadataSchema.extend({
authMethod: z.literal(AwsAuthMethods.IamRole),
roleArn: z.string(),
roleExternalId: z.string(),
roleNonce: z.string()
}),
commonRedshiftMetadataSchema.extend({ authMethod: z.literal(DatabaseAuthMethods.IndividualCredentials) })
]);
const commonSnowflakeMetadataSchema = z.object({
accountName: z.string(),
warehouse: z.string().optional(),
database: z.string().optional(),
role: z.string().optional()
});
const snowflakeMetadataSchema = z.discriminatedUnion("authMethod", [
commonSnowflakeMetadataSchema.extend({
authMethod: z.literal(SnowflakeAuthMethods.Password),
username: z.string(),
password: z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: z.literal(SnowflakeAuthMethods.Okta),
clientId: z.string(),
clientSecret: z.string(),
oktaSubdomain: z.string(),
identityProvider: z.string(),
authorizationServer: z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: z.literal(SnowflakeAuthMethods.NativeSnowflake),
clientId: z.string(),
clientSecret: z.string()
}),
commonSnowflakeMetadataSchema.extend({
authMethod: z.literal(SnowflakeAuthMethods.AzureAd),
clientId: z.string(),
clientSecret: z.string(),
resource: z.string(),
tenant: z.string()
}),
commonSnowflakeMetadataSchema.extend({ authMethod: z.literal(SnowflakeAuthMethods.KeyPair) }),
commonSnowflakeMetadataSchema.extend({
authMethod: z.literal(SnowflakeAuthMethods.ServiceAccountKeyPair),
username: z.string(),
privateKey: z.string(),
privateKeyPassphrase: z.string().optional()
})
]);
const spannerMetadataSchema = z.object({
service_account: z.string(),
dataBoostEnabled: z.boolean(),
instance: z.string(),
database: z.string()
});
const trinoMetadataSchema = z.object({
host: z.string(),
user: z.string(),
password: z.string(),
database: z.string(),
port: z.string(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const commonDatabaseSchema = z.object({
host: z.string(),
user: z.string(),
password: z.string(),
database: z.string(),
sshEnabled: z.boolean().optional(),
sshHost: z.string().optional(),
sshPort: z.string().optional(),
sshUser: z.string().optional()
});
const alloydbMetadataSchema = commonDatabaseSchema.extend({
port: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const mariadbMetadataSchema = commonDatabaseSchema.extend({
port: z.string().optional(),
caCertificateName: z.string().optional()
});
const mindsdbMetadataSchema = commonDatabaseSchema.extend({
port: z.string().optional(),
caCertificateName: z.string().optional()
});
const mysqlMetadataSchema = commonDatabaseSchema.extend({
port: z.string().optional(),
caCertificateName: z.string().optional()
});
const pgsqlMetadataSchema = commonDatabaseSchema.extend({
port: z.string().optional(),
sslEnabled: z.boolean().optional(),
caCertificateName: z.string().optional(),
caCertificateText: z.string().optional()
});
const materializeMetadataSchema = pgsqlMetadataSchema.extend({ cluster: z.string() });
const sqlServerMetadataSchema = commonDatabaseSchema.extend({ port: z.string() });
const databaseMetadataSchemasByType = {
"alloydb": alloydbMetadataSchema,
"athena": athenaMetadataSchema,
"big-query": bigqueryMetadataSchema,
"clickhouse": clickhouseMetadataSchema,
"databricks": databricksMetadataSchema,
"dremio": dremioMetadataSchema,
"mariadb": mariadbMetadataSchema,
"materialize": materializeMetadataSchema,
"mindsdb": mindsdbMetadataSchema,
"mongodb": mongodbMetadataSchema,
"mysql": mysqlMetadataSchema,
"pandas-dataframe": pandasDataframeMetadataSchema,
"pgsql": pgsqlMetadataSchema,
"redshift": redshiftMetadataSchema,
"snowflake": snowflakeMetadataSchema,
"spanner": spannerMetadataSchema,
"sql-server": sqlServerMetadataSchema,
"trino": trinoMetadataSchema
};
//#endregion
//#region src/database-integration-types.ts

@@ -691,2 +819,3 @@ const sqlIntegrationTypes = [

const databaseIntegrationTypesWithSslSupport = [
"alloydb",
"clickhouse",

@@ -702,4 +831,13 @@ "dremio",

];
function isDatabaseIntegrationType(type) {
return databaseIntegrationTypes.includes(type);
}
function isSqlIntegrationType(type) {
return sqlIntegrationTypes.includes(type);
}
function isDatabaseIntegrationTypeWithSslSupport(type) {
return databaseIntegrationTypesWithSslSupport.includes(type);
}
//#endregion
export { AwsAuthMethods, BigQueryAuthMethods, BigQueryServiceAccountParseError, DatabaseAuthMethods, SnowflakeAuthMethods, SpannerServiceAccountParseError, databaseIntegrationTypes, databaseIntegrationTypesWithSslSupport, databaseMetadataSchemasByType, getEnvironmentVariablesForIntegrations, getSqlAlchemyInput, isFederatedAuthMetadata, isFederatedAuthMethod, sqlIntegrationTypes };
export { AwsAuthMethods, BigQueryAuthMethods, BigQueryServiceAccountParseError, DatabaseAuthMethods, SnowflakeAuthMethods, SpannerServiceAccountParseError, databaseIntegrationConfigSchema, databaseIntegrationTypes, databaseIntegrationTypesWithSslSupport, databaseMetadataSchemasByType, federatedAuthMethods, getEnvironmentVariablesForIntegrations, getSnowflakeFederatedAuthSqlAlchemyInput, getSqlAlchemyInput, isDatabaseIntegrationType, isDatabaseIntegrationTypeWithSslSupport, isFederatedAuthMetadata, isFederatedAuthMethod, isSqlIntegrationType, sqlIntegrationTypes };
{
"name": "@deepnote/database-integrations",
"version": "1.1.1",
"version": "1.2.0",
"description": "Deepnote database integration definitions",

@@ -5,0 +5,0 @@ "keywords": [],

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display